簡體   English   中英

如何從元組列表中刪除第一個元素?

[英]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.xremove.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM