gpt4 book ai didi

python - 求和 Python 元组子集 ((1,john), (2, joey))=(3, john + joey)

转载 作者:行者123 更新时间:2023-11-28 22:44:09 24 4
gpt4 key购买 nike

我正在尝试将一个子集中的所有元组加在一起。

到目前为止我有:

list(itertools.combinations(((1, 'aa'), (2, 'bb'), (3, 'cc'), (4, 'dd'),
(5, 'ee'), (6, 'ff'), (7, 'gg'), (8, 'hh')), 6))

产生:

((1, 'aa'), (2, 'bb'), (5, 'ee'), (6, 'ff'), (7, 'gg'), (8, 'hh')), 
((1, 'aa'), (3, 'cc'), (4, 'dd'), (5, 'ee'), (6, 'ff'), (7, 'gg')),

但我想将所有数值和非数值相加,例如:

(29, 'aa'+'bb'+'ee'+'ff'+'gg'+'hh')

然后我想按最大值对它们进行升序排序。让我在 Mathematica 中只读一行的东西在 Python 中让我发疯。

最佳答案

如果您熟悉列表理解/生成器表达式,您绝对可以在 Python 的一行(和一点)行中执行此操作:

combs = list(itertools.combinations(
((1, 'aa'), (2, 'bb'), (3, 'cc'), (4, 'dd'),
(5, 'ee'), (6, 'ff'), (7, 'gg'), (8, 'hh')),
6
))
sums = [
(sum(n for n, text in comb), ''.join(text for n, text in comb))
for comb in combs
]

# Will sort by number first, then text, by default
sorted(sums)
Out[8]:
[(21, 'aabbccddeeff'),
(22, 'aabbccddeegg'),
(23, 'aabbccddeehh'),
(23, 'aabbccddffgg'),
(24, 'aabbccddffhh'),
(24, 'aabbcceeffgg'),
(25, 'aabbccddgghh'),
(25, 'aabbcceeffhh'),
# Etc.

关于python - 求和 Python 元组子集 ((1,john), (2, joey))=(3, john + joey),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908682/

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