删除列表中所有列表的最 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
允许您轻松扩展列表理解以过滤掉其他类型,例如 tuple
或 dict
:
>>> 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/