我有不同類型的數據(字符串,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. 按元素列表列出的元素列表python
- 5. 如何獲得每個元素的第二元素列表
- 6. jquery單獨列表元素的每四個子元素包裝
- 7. Python:按列表元素操作過濾大列表
- 8. 按列表中的元素進行過濾的模式?
- 9. 每個元素上的同位素過濾器鏈接
- 10. 如何通過檢查元素的權限來過濾列表中的元素?
- 11. 用另一個列表的元素過濾列表 - Python
- 12. 2D陣列,其中每個元素是一個類元素
- 13. 從列表中過濾元素
- 14. 列表中的日曆類型元素
- 15. $(e.target).is()的元素類型列表;
- 16. 過濾塊+爲每個第三個元素添加一個類
- 17. lapply列表中的每個元素
- 18. 對於列表中的每個元素
- 19. 顯示列表中的每個元素
- 20. 每個子列表的計數元素
- 21. 比較列表中的每個元素
- 22. 按類型計算元素
- 23. 按包含字符串的最長元素過濾列表
- 24. 查找每個循環的最後一個元素,無論元素類型的
- 25. 過濾XML的元素所
- 26. tagName的過濾元素
- 27. 通過每個元素C#
- 28. Scala過濾元組列表中元素的條件總和
- 29. 通過最大元素過濾元組列表
- 30. 按元素列表的第二個元素對列表進行排序
使用'for'環和'isinstance(元素,INT)'等 – furas
你可能想嘗試'過濾器的方法,或列表理解 –