gpt4 book ai didi

Python 列表 : exchange every n-th value with the (n+1)th

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:56 26 4
gpt4 key购买 nike

最好的方法是什么:

>>> replace2([1, 2, 3, 4, 5, 6])
[2, 1, 4, 3, 6, 5]

最佳答案

def replace2inplace(lst):
lst[1::2], lst[::2] = lst[::2], lst[1::2]

这使用切片分配和切片步长来交换列表中的每一对,就地:

>>> somelst = [1, 2, 3, 4, 5, 6]
>>> replace2inplace(somelst)
>>> somelst
[2, 1, 4, 3, 6, 5]

否则你可以使用一些 itertools 技巧:

from itertools import izip, chain

def replace2copy(lst):
lst1, lst2 = tee(iter(lst), 2)
return list(chain.from_iterable(izip(lst[1::2], lst[::2])))

给出:

>>> replace2([1, 2, 3, 4, 5, 6])
[2, 1, 4, 3, 6, 5]

list()调用可选;如果你只需要遍历生成器的结果就足够了:

from itertools import izip, chain, islice, tee

def replace2gen(lst):
lst1, lst2 = tee(iter(lst))
return chain.from_iterable(izip(islice(lst1, 1, None, 2), islice(lst2, None, None, 2)))

for i in replace2gen([1, 2, 3, 4, 5, 6]):
print i

其中 replace2gen() 也可以采用任意迭代器。

关于Python 列表 : exchange every n-th value with the (n+1)th,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com