[英]How to remove the first element from a list of tuples?
我有一個像這樣的元組列表:
x = [("a","b","c"), ("d","e","f"), ("g","h","i"), ("j","k","l")]
我想從每個索引中刪除第一個元素,如下所示:
x = [("b","c"), ("e","f"), ("h","i"), ("k","l")]
我已經嘗試過使用pop.x
和remove.x
,但它不起作用。 我認為是因為列表中有無法更改的元組?:
for i in result:
i.pop(0)
因此,我嘗試使用zip
函數將元組列表轉換為列表列表,但出現錯誤:
AttributeError: type object 'zip' has no attribute 'result'
任何想法我做錯了什么?
感謝所有有用的答案! 給貓剝皮的許多方法,我可以用來解決我遇到的其他問題 =D
python中的元組是一個不可更改的對象。 你可以在其中存儲任何你想要的東西,但是一旦它被聲明,你就不能把它改回來。
這里是元組的鏈接: https ://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences(第 5.3 節)
pop
函數從列表中刪除最后一個元素並將其返回。 由於您的列表中有元組,因此在您的元組列表中調用pop
函數只會導致返回並刪除列表中的最后一個元組。
元組是不可變的,所以你不能改變它們。 但是,您可以使用新元組列表覆蓋您的列表:
x = [('a','b','c'), ('d','e','f'), ('g','h','i'), ('j','k','l')]
x = [tpl[1:] for tpl in x]
輸出:
[('b', 'c'), ('e', 'f'), ('h', 'i'), ('k', 'l')]
正如您所發現的,元組是不可變的,因此您必須使用不包含項目的元組創建一個新列表
new_list = []
for i in result:
new_list.append(i[1:])
或用它們的索引替換列表項
for idx, tup in enumerate(x):
x[idx] = tup[1:]
或作為列表理解
[i[1:] for i in result]
x = [('a','b','c'), ('d','e','f'), ('g','h','i'), ('j','k','l')]
y = []
for t in x:
y.append(tuple(list(t)[1:]))
print(y)
輸出
[('b', 'c'), ('e', 'f'), ('h', 'i'), ('k', 'l')]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.