Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中对多个列表中的每个元素求和_Python_List - Fatal编程技术网

在Python中对多个列表中的每个元素求和

在Python中对多个列表中的每个元素求和,python,list,Python,List,我有以下代码: list_1 = [11, 22] list_2 = [33, 44, 55 ,66] list_3 = [77, 88 ,99] 我想对列表中的每个元素求和。i、 e.11+33+77,11+33+88,…22+33+77,22+33+88…并将所有金额放入最终列表中 我有以下几行: list_1 = [11, 22] list_2 = [33, 44, 55 ,66] list_3 = [77, 88 ,99] result = [] for L_1 in list_1

我有以下代码:

list_1 = [11, 22]
list_2 = [33, 44, 55 ,66]
list_3 = [77, 88 ,99]
我想对列表中的每个元素求和。i、 e.11+33+77,11+33+88,…22+33+77,22+33+88…并将所有金额放入最终列表中

我有以下几行:

list_1 = [11, 22]
list_2 = [33, 44, 55 ,66]
list_3 = [77, 88 ,99]

result = []

for L_1 in list_1:
    for L_2 in list_2:
        for L_3 in list_3:
            result.append(L_1 + L_2 + L_3)

print result                   # to output all elements
print list(set(result))     # to not showing duplicates
代码运行良好,但看起来很笨拙。如果有20个或更多的列表参与计算,那么它看起来一点都不好


你能告诉我一条更好的路吗

这种组合称为笛卡尔积。你可以使用它

输出

[121, 132, 143, 154, 165, 176, 187]
(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)
如果您事先不知道有多少列表,您甚至可以使用
产品

all_lists = list_1, list_2, list_3
result = {sum(t) for t in product(*all_lists)}

product
迭代器从传递给它的iterables中生成项目的元组。然后,我们将这些元组传递给内置的
sum
函数以执行加法

以下是
产品
的“原始”输出:

from itertools import product

list_1 = [1, 2]
list_2 = [3, 4]
list_3 = [5, 6]

all_lists = list_1, list_2, list_3
for t in product(*all_lists):
    print(t)
输出

[121, 132, 143, 154, 165, 176, 187]
(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)

这种组合称为笛卡尔积。你可以使用它

输出

[121, 132, 143, 154, 165, 176, 187]
(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)
如果您事先不知道有多少列表,您甚至可以使用
产品

all_lists = list_1, list_2, list_3
result = {sum(t) for t in product(*all_lists)}

product
迭代器从传递给它的iterables中生成项目的元组。然后,我们将这些元组传递给内置的
sum
函数以执行加法

以下是
产品
的“原始”输出:

from itertools import product

list_1 = [1, 2]
list_2 = [3, 4]
list_3 = [5, 6]

all_lists = list_1, list_2, list_3
for t in product(*all_lists):
    print(t)
输出

[121, 132, 143, 154, 165, 176, 187]
(1, 3, 5)
(1, 3, 6)
(1, 4, 5)
(1, 4, 6)
(2, 3, 5)
(2, 3, 6)
(2, 4, 5)
(2, 4, 6)
演示:

演示:



这给出了乘积,但询问者不想求和吗?@Windmill它也这样做了吗?抱歉,刚刚超出输出中给定的数值。@PM 2Ring,谢谢您的指导@Windmill结果中的项目数量很小,因为我们将它们收集在一组中以消除重复项。这给出了产品,但询问者不想将这些值相加吗?@Windmill它也这样做吗?抱歉,刚刚超出输出中给定的数值。@PM 2Ring,谢谢您的指导@Windmill结果中的项目数量很少,因为我们收集了一组项目以消除重复。请查看:@Transhuman,谢谢您的帮助。你的台词很好学。请继续回答好吗?@cᴏʟᴅsᴘᴇᴇᴅ - 谢谢,我误解了这个问题。请看下面的内容:@Transhuman,谢谢你的帮助。你的台词很好学。请继续回答好吗?@cᴏʟᴅsᴘᴇᴇᴅ - 谢谢,我误解了这个问题。另请参见
set(map(sum,product(*list)))
基于Op的要求。你的意思是他们“将所有总和放入最终列表”?@StefanPochmann,非常好!谢谢你的教诲。:)不,我指的是列表行中的
列表(set(result))
。@cᴏʟᴅsᴘᴇᴇᴅ 这不在规定的“要求”中。另外,它的注释是“不要显示重复项”(强调我的解释)。这不是他们的
结果
集合(映射(总和,产品(*列表))
基于Op的要求。你是说他们“将所有总和放入最终列表”?@StefanPochmann,非常好!谢谢你的教诲。:)不,我指的是列表行中的
列表(set(result))
。@cᴏʟᴅsᴘᴇᴇᴅ 这不在规定的“要求”中。另外,它的注释是“不要显示重复项”(强调我的解释)。实际上,这不是他们的
结果。