簡體   English   中英

如何展平元組列表並刪除重復項?

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

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