[英]Remove a tuple from a list if the tuple contains a certain element by given index
我有一個元組列表(num,id):
l = [(1000, 1), (2000, 2), (5000, 3)]
每個元組的第二個元素包含標識符。 假設我想刪除 id 為2
的元組,我該怎么做?
即我希望新列表為: l = [(1000,1), (5000, 3)]
我試過l.remove(2)
但它不起作用。
您可以使用帶有過濾器的列表理解來實現此目的。
l = [(1000, 1), (2000, 2), (5000, 3)]
m = [(val, key) for (val, key) in l if key != 2]
那是因為值2不在列表中。 相反,類似於以下內容:形成元組中第二個元素的列表,然后刪除該位置的元素。
del_pos = [x[1] for x in l].index(2)
l.pop(del_pos)
請注意,這只會刪除第一個這樣的元素。 如果您的實例不是唯一的,請使用其他解決方案之一。 我相信這會更快,但只能處理單一外觀的情況。
或使用過濾器:
l = [(1000, 1), (2000, 2), (5000, 3)]
print(list(filter(lambda x: x[1] != 2, l)))
輸出:
[(1000, 1), (5000, 3)]
你可以這樣做:
>>> l = [(1000, 1), (2000, 2), (5000, 3)]
>>> for i in list(l):
... if i[1] == 2:
... l.remove(i)
如果您只想刪除第一次出現,請在remove
行下方添加break
簡單的列表理解:
[x for x in l if x[1] != 2]
另一種可能的解決方案
r = [(1000, 1), (2000, 2), (5000, 3)]
t = [i for i in r if i.count(2) == 0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.