我正在尝试创建一个这样的循环
newList = [a + b for a,b in list[::2], list[1::2]]
Run Code Online (Sandbox Code Playgroud)
意思是,从列表中取两个连续的条目,对它们执行某些操作并将其放入新的列表中.
那会怎么样?
您想要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构造函数.这可能会导致混淆错误,通常被视为不良形式.