gpt4 book ai didi

python - 制作一组元组的有效方法,其中元组的顺序无关紧要

转载 作者:IT老高 更新时间:2023-10-28 21:13:32 24 4
gpt4 key购买 nike

我想创建一组元组,其中元组的顺序无关紧要。例如-如果我要添加的元组是:

[(1,2),(1,3),(2,1)]

应该这样输出:

{(1,2),(1,3)}

在 python 中有什么有效的方法吗?

最佳答案

可以先应用sorted,再应用tuple,再转换成set:

res = set(map(tuple, map(sorted, L)))

print(res)

{(1, 2), (1, 3)}

说明

您不应该将每个元组转换为 set 作为初始步骤有几个很好的理由:

  1. 元组 (1, 1, 2)(1, 2) 将在转换为 set 后变得相等。
  2. 即使在我们考虑长度为 2 的元组的情况下,我们也会添加一个假设,即 tuple({(1, 2)})tuple({(2, 1)}) 是相等的。虽然这可能是真的,但它会被认为是一个实现细节,因为 set 被认为是无序的。

函数构成

函数组合不是 Python 原生的,但如果您可以访问第 3 方 toolz可以避免嵌套 map 的库:

from toolz import compose

tup_sort = compose(tuple, sorted)

res = set(map(tup_sort, L))

关于python - 制作一组元组的有效方法,其中元组的顺序无关紧要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com