python - 如何从 python 列表中删除所有列表?

标签 python python-3.x list

删除列表中所有列表的最 pythonic 方法是什么?

例如,如果有一个像这样的列表[1,2,['randompie'],3,[],4,5],我怎样才能把它变成这样[1,2,3,4,5]

这是我尝试过的:

[elem for elem in [1,2,['randompie'],3,[],4,5] if type(elem)!='list']

最佳答案

您可以使用列表推导式轻松过滤列表中的所有非列表元素:

>>> l = [1,2,['randompie'],3,[],4,5]
>>> [el for el in l if not isinstance(el, list)]
[1, 2, 3, 4, 5]

请注意,我使用的是 isinstance 而不是 type。这是出于两个原因。首选前一个函数,因为 it takes parent classes into account .并且因为 isinstance 允许您轻松扩展列表理解以过滤掉其他类型,例如 tupledict:

>>> l = [1, 2, ['randompie'], 3, [], 4, 5, (1,)]
>>> [el for el in l if not isinstance(el, (list, tuple))] # filter out tuples and list
[1, 2, 3, 4, 5]

关于python - 如何从 python 列表中删除所有列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45828983/

相关文章:

python - 对 IPv4Network 和 IPv6Network 对象列表进行排序

python - 获取列表中相似连续元素的索引(Python3)

json - 如何将嵌套类转换为 json 或 dict?

python - 将列表中的重复项合并到 python 字典中

c++ - 向列表中添加一个新元素,并返回对该元素的引用?

python - 按列显示多个颜色图的热图

python - 什么时候使用 Python 特殊方法?

python - 比较字符串

python - 如何从数据框列值创建单独的子字符串列

c# - 如何让一个方法接受不确定数量的不同类型的列表?