bdh*_*har 3 python tuples list
我有一个像这样的元组列表:mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)].如果我使用列表理解slist = [item for sublist in mylist for item in sublist],我可以得到slist = [1,2,3,6,1,1,7,8,1,3,4,5].
如果我只需要slist像这样的独特元素,我应该如何修改[1,2,3,6,7,8,4,5]?
使用集而不是列表.
set(slist)
Run Code Online (Sandbox Code Playgroud)
如果您确实需要它作为列表,那么您可以将其转换回列表:
slist = list(set(slist))
Run Code Online (Sandbox Code Playgroud)
请注意,此转换不会保留元素的原始顺序.如果您需要相同的订单,您可以使用它:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
通过使用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])
Run Code Online (Sandbox Code Playgroud)