簡體   English   中英

元組列表中的唯一項列表

[英]List of unique items in a list of tuples

我有一個像這樣的元組列表: mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)] 如果我使用list comprehension slist = [item for sublist in mylist for item in sublist] ,我可以得到slist = [1,2,3,6,1,1,7,8,1,3,4,5]

如果我只需要像[1,2,3,6,7,8,4,5]這樣的slist唯一元素,我該如何修改?

使用而不是列表。

set(slist)

如果您確實需要它作為列表,那么您可以將其轉換回列表:

slist = list(set(slist))

請注意,此轉換不會保留元素的原始順序。 如果您需要相同的訂單,您可以使用它:

>>> result = []
>>> seen = set()
>>> for innerlist in mylist:
        for item in innerlist:
            if not item in seen:
                seen.add(item)
                result.append(item)
>>> result
[1, 2, 3, 6, 7, 8, 4, 5]

通過使用itertools.chain.from_iterable然后將結果傳遞給set ,您實際上可以使您的第一部分更容易,這將只保留唯一元素:

>>> mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)]
>>> import itertools
>>> set(itertools.chain.from_iterable(mylist))
set([1, 2, 3, 4, 5, 6, 7, 8])
import itertools
chain = itertools.chain(*mylist)
print(set(chain))

摘自在Python中展平淺表並適用於此問題。

你應該使用python sets http://docs.python.org/library/sets.html

set(yourlist)

它會做的伎倆

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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