gpt4 book ai didi

python - 将 Python 列表元素映射到多个元素,避免嵌套列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:37 25 4
gpt4 key购买 nike

这样我就可以通过映射另一个列表中的每个元素来构建一个新列表:

# turn [0,5,10,15] into [1,6,11,16]
[ x+1 for x in range(0,20,5) ]

但我希望每个元素在我的新列表中产生两个元素。我怎样才能做到这一点?这是我的尝试:

# turn [0,5,10,16] into [0,1,-5,6,-10,11,-15,16]
# does not work! gives [[0,1],[-5,6],[-10,11],[-15,16]]
[ [-x,x+1] for x in range(0,20,5) ]

# turn [0,5,10,16] into [0,1,-5,6,-10,11,-15,16]
# does not work! gives [(0,1),(-5,6),(-10,11),(-15,16)]
[ (-x,x+1) for x in range(0,20,5) ]

当然,我可以创建列表的列表,然后以某种方式将其展平,但有没有更简洁的方法?

最佳答案

你需要使用两个循环:

>>> [t for x in range(0,20,5) for t in [-x,x+1] ]
[0, 1, -5, 6, -10, 11, -15, 16]

或者,如果您要处理更大的数据集,您可以使用 itertools.chain()

>>> from itertools import chain
>>>
>>> list(chain.from_iterable([-x,x+1] for x in range(0,20,5)))
[0, 1, -5, 6, -10, 11, -15, 16]
>>>

请注意,如果您只想遍历结果,则不必将结果转换为列表,因为 chain.from_iterable 返回一个迭代器,并且在内存使用方面进行了相当多的优化.

关于python - 将 Python 列表元素映射到多个元素,避免嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489013/

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