gpt4 book ai didi

python - 是否可以修改此生成器表达式以匹配 for 循环结果?

转载 作者:行者123 更新时间:2023-11-28 22:48:34 25 4
gpt4 key购买 nike

考虑这个 for 循环:

y = []
for z in ('a', 'b\nc', 'd'):
y.extend(z.splitlines())

平面列表y不是通过类似方式获得的

y = []
y.extend(z.splitlines() for z in ('a', 'b\nc', 'd'))

是否可以修改生成器表达式以返回平面列表?

最佳答案

你需要一个双循环:

y.extend(v for z in ('a', 'b\nc', 'd') for v in z.splitlines())

如果 y 开始时是空的,您不妨将其设为列表推导式:

y = [v for z in ('a', 'b\nc', 'd') for v in z.splitlines()]

您还可以使用 itertools.chain.from_iterable() :

from itertools import chain

y.extend(chain.from_iterable(z.splitlines() for z in ('a', 'b\nc', 'd')))

演示:

>>> from itertools import chain
>>> [v for z in ('a', 'b\nc', 'd') for v in z.splitlines()]
['a', 'b', 'c', 'd']
>>> y = []
>>> y.extend(v for z in ('a', 'b\nc', 'd') for v in z.splitlines())
>>> y
['a', 'b', 'c', 'd']
>>> y = []
>>> y.extend(chain.from_iterable(z.splitlines() for z in ('a', 'b\nc', 'd')))
>>> y
['a', 'b', 'c', 'd']

关于python - 是否可以修改此生成器表达式以匹配 for 循环结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964050/

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