从单个列表中循环遍历多个变量

McE*_*roe 3 python

我正在尝试创建一个这样的循环

newList = [a + b for a,b in list[::2], list[1::2]]
Run Code Online (Sandbox Code Playgroud)

意思是,从列表中取两个连续的条目,对它们执行某些操作并将其放入新的列表中.

那会怎么样?

int*_*ted 5

您想要zip两个新创建的列表:

newList = [a + b for a,b in zip(list[::2], list[1::2])]
Run Code Online (Sandbox Code Playgroud)

您还可以使用迭代器以更高内存效率的方式执行此操作:

it = iter(list)
newList = [a + b for a, b in zip(it, it)]
Run Code Online (Sandbox Code Playgroud)

甚至更有效*通过使用izip返回迭代器的函数:

import itertools
it = iter(list)
newList = [a + b for a, b in itertools.izip(it, it)]
Run Code Online (Sandbox Code Playgroud)

*至少在Python 2.x下; 在Python 3中,据我所知,它zip本身返回一个迭代器.

请注意,你真的不应该调用变量,list因为这会破坏内置list构造函数.这可能会导致混淆错误,通常被视为不良形式.