元组列表中唯一项的列表

发布于 2024-12-06 23:01:32 字数 297 浏览 0 评论 0原文

我有一个像这样的元组列表: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] 中的唯一元素,我应该如何修改?

I have a list of tuples like this: mylist = [(1,2,3),(6,1,1),(7,8,1),(3,4,5)]. If I use the list comprehension slist = [item for sublist in mylist for item in sublist], I could get slist = [1,2,3,6,1,1,7,8,1,3,4,5].

How should I modify if I need only unique elements in slist like this [1,2,3,6,7,8,4,5]?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

怪异←思 2024-12-13 23:01:32

使用 集合 而不是列表。

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]

Use a set instead of a list.

set(slist)

If you really need it as a list then you can convert it back to a list:

slist = list(set(slist))

Note that this conversion won't preserve the original order of the elements. If you need the same order you can use this instead:

>>> 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]
悸初 2024-12-13 23:01:32

实际上,您可以使用 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])

You can actually make your first part a bit easier by using itertools.chain.from_iterable and then passing the result to set, which will only retain the unique elements:

>>> 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])
冷夜 2024-12-13 23:01:32
import itertools
chain = itertools.chain(*mylist)
print(set(chain))

取自 Flattening a Shoulder List in Python 并适用于本问题。

import itertools
chain = itertools.chain(*mylist)
print(set(chain))

taken from Flattening a shallow list in Python and adapted for use in this question.

风和你 2024-12-13 23:01:32

您应该使用 python 集 http://docs.python.org/library/sets.html

set(yourlist)

就可以了

You should use python sets http://docs.python.org/library/sets.html

set(yourlist)

it will do the trick

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文