![](/img/trans.png)
[英]How remove duplicates of tuples in a list, where the tuple elements are in reverse order?
[英]How to flatten a list of tuples and remove the duplicates?
我正在嘗試從列表中的元組中刪除重復項,並將它們添加到一個沒有重復項的新列表中,
我嘗試制作兩個循環,但檢查重復或設置,但問題是有三個元組
任何人都可以幫助我,我被困在這里
例
[(2, 5), (3, 5), (2, 5)]
產量
[2, 3, 5]
如果順序不重要,您可以創建一個set
,將每個元組的每個元素添加到集合中,集合就是您的結果。
s = set()
for tup in lst:
for el in tup:
s.add(el)
# or use a set comprehension:
# # s = {el for tup in lst for el in tup}
如果訂單很重要,您可以大致相同,但也可以添加結果列表。
s = set()
result = []
for tup in lst:
for el in tup:
if el not in s:
s.add(el)
result.append(el)
你可以使用set comprehension:
lst = [(2, 5), (3, 5), (2, 5)]
{e for l in lst for e in l}
你需要通過每個元組,然后元組的每個元素。 在追加之前,只需檢查元素是否在列表中:
a = [(2, 5), (3, 5), (2, 5)]
b = []
for i in a:
for j in i:
if j not in b:
b.append(j)
print b
運行上面的代碼后,我得到了這個輸出:
[2, 5, 3]
一個簡單的方法是使用numpy ravel,然后設置:
import numpy as np
lst = [(2, 5), (3, 5), (2, 5)]
res = list(set(np.ravel(a)))
得到:
[2, 3, 5]
回答Apero的評論:
如果您不想使用numpy,您可以使用以下內容展平列表:
lst = [(2,5), (3,5), (2,5)]
tmp = []
for i in lst:
for j in i:
tmp.append(j)
res = set(tmp)
print res
這使:
[2, 3, 5]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.