可以说我有一个像下面这样的元组:
s = 15, 50, 71, 4, 19
Run Code Online (Sandbox Code Playgroud)
我试图将元组中的每个元素逐个添加到每个元素中.即找到15和50以及15和71等的总和......
所以我试图搞乱map函数,但是我从来没有使用过它,但是我已经想到了这个但是我得到了TypeError:map()的参数2必须支持迭代错误.
test1 = tuple(map(operator.add, s[0], s[1]))
Run Code Online (Sandbox Code Playgroud)
我也试图让每个元素都是一个整数,但我也得到一个错误
test1 = tuple(map(operator.add, int(s[0]), int(s[1])))
Run Code Online (Sandbox Code Playgroud)
我希望有人知道另一种方法,我可以完成我想要做的事情.
谢谢!!
编辑:
谢谢大家,所有的建议都很有帮助,我发现了一些不同的方法来完成我需要做的事情!
我想也许你正在寻找itertools.combinations和itertools.starmap:
In [7]: s = 15, 50, 71, 4, 19
In [8]: import itertools as IT
In [9]: import operator
In [10]: list(IT.starmap(operator.add, (IT.combinations(s, 2))))
Out[10]: [65, 86, 19, 34, 121, 54, 69, 75, 90, 23]
Run Code Online (Sandbox Code Playgroud)
IT.combinations(s, 2)返回一个包含所有项目对的迭代器s:
In [11]: list(IT.combinations(s, 2))
Out[11]:
[(15, 50),
(15, 71),
(15, 4),
(15, 19),
(50, 71),
(50, 4),
(50, 19),
(71, 4),
(71, 19),
(4, 19)]
Run Code Online (Sandbox Code Playgroud)
IT.starmap适用operator.add于每一对.您可以使用starmap而不是map在需要解压缩参数时使用.operator.add期望2个参数,而这对只是一个对象 - 一个2元组.因此我们使用starmap它将2元组解压缩为2个参数,然后再传递给它们operator.add.