我有不同类型的数据(字符串,int等)的列表。我需要创建一个新的列表,例如只有int元素,另一个列表只包含字符串元素。怎么做?按每个元素的类型过滤列表的元素
回答
你可以用list comprehension做到这一点:
integers = [elm for elm in data if isinstance(elm, int)]
哪里data
是数据。以上所做的是创建一个新列表,使用满足if
之后的条件的元素data
(elm
)填充它,该元素将检查元素是否为int
的实例。您还可以使用filter
:
integers = list(filter(lambda elm: isinstance(elm, int), data))
以上会过滤掉根据传递的拉姆达,过滤掉所有非整数元素。然后您可以将其应用于字符串,使用isinstance(elm, str)
来检查字符串的实例。
伟大的作品,谢谢! –
@IlyaSpark没问题,很乐意帮忙 – Li357
排序列表按类型,然后使用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']]
OP似乎想单独列出没有子列表,但很好的答案! – Li357
@AndrewL。 - 他们仍然是分开的。他们只是没有手工制作的标签。然而,这可以用字典来完成,例如, 'list = {k:list(v)for k,v in itertools.groupby(l,lambda x:str(type(x))}}'。当然,好处是这些名称是自动生成的,并且可以轻松组织。 – TigerhawkT3
- 1. 按元素过滤数组
- 2. 元素的过滤
- 3. 返回列表中每个元素的第一个元素?
- 4. jquery单独列表元素的每四个子元素包装
- 5. 如何获得每个元素的第二元素列表
- 6. Python:按列表元素操作过滤大列表
- 7. 如何通过检查元素的权限来过滤列表中的元素?
- 8. 2D阵列,其中每个元素是一个类元素
- 9. $(e.target).is()的元素类型列表;
- 10. 过滤块+为每个第三个元素添加一个类
- 11. lapply列表中的每个元素
- 12. 按类型计算元素
- 13. 通过每个元素C#
- 14. 按元素列表的第二个元素对列表进行排序
- 15. 如何比较列表中的每个元素与另一个列表中的每个元素?
- 16. 将列表中的每个元素与另一个列表中的每个元素相乘lisp
- 17. 如何将列表中的每个元素与R中另一个列表中的每个元素分开?
- 18. Python:按每个子列表的第一个元素排序列表列表
- 19. R:访问每个元素的最后一个子元素的列表
- 20. 为元素数组中的每个元素赋值每个元素jQuery
- 21. 的Python:配对的每一个元素的单一元素列表中的
- 22. 按长度过滤数组元素
- 23. 对齐列表元素中的元素
- 24. 选择过滤列表中的第一个元素jQuery
- 25. 从每2n个元素表
- 26. 列表形式的列表中的每个第n个元素
- 27. 如何获得列表中每个元素的第二个子元素
- 28. 按索引选择元素(同一类的多个元素)
- 29. 如何访问每个列表的第一个元素列表
- 30. 类按jQuery元素
使用'for'环和'isinstance(元素,INT)'等 – furas
你可能想尝试'过滤器的方法,或列表理解 –