给定一个包含字符串和 None 值的列表,其中某些字符串嵌入了换行符,我希望将带有换行符的字符串拆分为多个字符串并返回一个扁平列表。
我已经编写了使用生成器函数来执行此操作的代码,但代码相当庞大,我想知道是否可以使用列表理解或 itertools 中的函数来更简洁地完成此操作。模块。 itertools.chain
似乎无法拒绝迭代任何不可迭代的元素。
def expand_newlines(lines):
r"""Split strings with newlines into multiple strings.
>>> l = ["1\n2\n3", None, "4\n5\n6"]
>>> list(expand_newlines(l))
['1', '2', '3', None, '4', '5', '6']
"""
for line in lines:
if line is None:
yield line
else:
for l in line.split('\n'):
yield l
最佳答案
您可以使用yield from
。
def expand(lines):
for line in lines:
if isinstance(line,str):
yield from line.split('\n')
elif line is None:
yield line
<小时/>
list(expand(l))
#['1', '2', '3', None, '4', '5', '6']
关于python - 使用推导式拆分并展平字符串和 None 值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60468226/