按每个元素的类型过滤列表的元素

时间:2016-10-03 04:38:15

标签: python

我有不同类型数据的列表(字符串,整数等)。我需要创建一个新列表,例如,只有int元素,另一个列表只有字符串元素。怎么做?

2 个答案:

答案 0 :(得分:6)

您可以使用list comprehension完成此操作:

integers = [elm for elm in data if isinstance(elm, int)]

data是数据。上面做的是创建一个新列表,用dataelm)的元素填充它,满足if之后的条件,它检查元素是否是{{的实例1}}。您也可以使用filter

int

以上将根据传递的lambda过滤掉元素,该lambda过滤掉所有非整数。然后,您可以使用integers = list(filter(lambda elm: isinstance(elm, int), data)) 将其应用于字符串,以检查字符串的实例。

答案 1 :(得分:2)

按类型对列表进行排序,然后使用groupby对其进行分组:

>>> import itertools
>>> l = ['a', 1, 2, 'b', 'e', 9.2, 'l']
>>> l.sort(key=lambda x: str(type(x)))
>>> lists = [list(v) for k,v in itertools.groupby(l, lambda x: str(type(x)))]
>>> lists
[[9.2], [1, 2], ['a', 'b', 'e', 'l']]