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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/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 使用zip函数组合长列表_Python_List_Loops_Python 2.7_Zip - Fatal编程技术网

Python 使用zip函数组合长列表

Python 使用zip函数组合长列表,python,list,loops,python-2.7,zip,Python,List,Loops,Python 2.7,Zip,假设我有一个列表 mylist = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]] 如果我想逐个元素添加元素,那么我可以使用逻辑: [x+y for x,y in zip(mylist[0],mylist[1],mylist[2],mylist[3],mylist[4],mylist[6]] 它将给出列式元素的总和。 但问题是,如果mylist恰好是包含1000个列表的列表,并且我需要逐个元素进行操作,那么在zip函数中编

假设我有一个列表

mylist = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18]]
如果我想逐个元素添加元素,那么我可以使用逻辑:

[x+y for x,y in zip(mylist[0],mylist[1],mylist[2],mylist[3],mylist[4],mylist[6]]
它将给出列式元素的总和。 但问题是,如果mylist恰好是包含1000个列表的列表,并且我需要逐个元素进行操作,那么在zip函数中编写mylist的每个索引就有点笨拙和模糊了

我试着在zip函数中加入循环,但它不起作用。有什么想法吗

它应该像这样工作

zip(for k in mylist) # or something else

感谢您将所有第一个元素和所有第二个元素相加,依此类推:

In [2]: [sum(k) for k in zip(*mylist)]
Out[2]: [51, 57, 63]
请注意,输出中的每个数字都是
len(mylist)
number的总和:

In [3]: zip(*mylist)
Out[3]: [(1, 4, 7, 10, 13, 16), (2, 5, 8, 11, 14, 17), (3, 6, 9, 12, 15, 18)]

解压
mylist
,使其项成为
zip
的独立参数,以求所有第一个元素和所有第二个元素的总和,依此类推:

In [2]: [sum(k) for k in zip(*mylist)]
Out[2]: [51, 57, 63]
请注意,输出中的每个数字都是
len(mylist)
number的总和:

In [3]: zip(*mylist)
Out[3]: [(1, 4, 7, 10, 13, 16), (2, 5, 8, 11, 14, 17), (3, 6, 9, 12, 15, 18)]

解包
mylist
,使其项成为
zip

的单独参数。另一种方法,在这里看起来更明显,就是在解包列表上使用内置的
map
sum
并排
zip

>>> map(sum, zip(*mylist))
[51, 57, 63]
如果你是一个发电机迷,下面可能会增加一些好处

>>> from itertools import izip, imap
>>> list(imap(sum, izip(*mylist)))
[51, 57, 63]

另一种方法(这里看起来更明显)是在未打包的列表上使用内置的
map
sum
以及
zip

>>> map(sum, zip(*mylist))
[51, 57, 63]
如果你是一个发电机迷,下面可能会增加一些好处

>>> from itertools import izip, imap
>>> list(imap(sum, izip(*mylist)))
[51, 57, 63]

在您的示例中,“zip”将为您提供一个6元组的列表…您的示例中有语法错误和逻辑错误,请尝试运行它。但是我认为你要找的是
zip(*mylist)
。看看“reduce”:在你的例子中,“zip”会给你一个6元组的列表……你的例子有语法错误和逻辑错误,试着运行它。但我想你要找的是
zip(*mylist)