我有不同类型数据的列表(字符串,整数等)。我需要创建一个新列表,例如,只有int元素,另一个列表只有字符串元素。怎么做?
答案 0 :(得分:6)
您可以使用list comprehension完成此操作:
integers = [elm for elm in data if isinstance(elm, int)]
data
是数据。上面做的是创建一个新列表,用data
(elm
)的元素填充它,满足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']]