python - 使用推导式拆分并展平字符串和 None 值的列表

标签 python python-3.x generator list-comprehension python-itertools

给定一个包含字符串和 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/

相关文章:

python - 为什么元组在分配相同的值时不会获得相同的 ID?

python - 改变不同维度的数组一起广播

python - Python中使用SAX生成XML输出时如何插入DTD DOCTYPE内容

Google 应用程序引擎上的 Python 线程(或其等效项)解决方法?

python-3.x - 可视化使用 SpaCy 中的预训练词嵌入计算的余弦相似度分数

python - 执行生成器表达式的最pythonic方式是什么?

python-3.x - 如何在列上应用函数

python - 网站更改代码后网络爬虫抛出错误

c - Yacc问题: Make Data available in next Non Terminal