gpt4 book ai didi

用于重新排列列表的 Python 标准库函数

转载 作者:太空狗 更新时间:2023-10-29 21:20:20 25 4
gpt4 key购买 nike

我想知道 Python 中是否有一个标准库函数可以重新排列列表的元素,如下所示:

a = [1,2,3,4,5,6,7]

function(a)

print a

a = [1,7,2,6,3,5,4]

它应该从原始列表的开头获取一个元素,然后从结尾获取一个元素,然后从开头获取第二个元素,依此类推。然后重新排列列表。

问候,

最佳答案

您可以构建一个快速、高效的内存 generator使用 itertools哪个做你想要的:

from itertools import chain, izip

def reorder(a):
gen = chain.from_iterable(izip(a, reversed(a)))
for _ in a:
yield next(gen)

>>> list(reorder(a))
<<< [1, 7, 2, 6, 3, 5, 4]

您会发现 itertools 包含大量构建 block ,可用于创建您自己的高效迭代器。一个稍微更简洁的解决方案:

>>> list(chain.from_iterable(izip(a, reversed(a))))[:len(a)]
<<< [1, 7, 2, 6, 3, 5, 4]

List comprehensions是另一种非常简洁的构建列表的方法:

>>> [x for t in zip(a, reversed(a)) for x in t][:len(a)]
<<< [1, 7, 2, 6, 3, 5, 4]

最后,这是一个简短的单行代码,只是为了好玩:

>>> sum(zip(a, a[::-1]), ())[:len(a)]
<<< (1, 7, 2, 6, 3, 5, 4)

关于用于重新排列列表的 Python 标准库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7141577/

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