假設我有列表A
,定義爲[['foo',1],['bar',2]]
。我如何找到其中有'foo'
的A
裏面的列表?搜索列表元素內部列表[Python 3]
回答
使用生成器表達式來測試每個子列表。既然我們只想要第一個,我們可以在genexp上使用next()
函數。
A = [['foo', 1], ['bar', 2]]
a = next(x for x in A if "foo" in x)
這給你自己的子列表。如果您希望子列表的索引改爲:
a = next(i for i, x in enumerate(A) if "foo" in x)
請注意,您可能實際上並不需要該索引。你可以做大部分事情,你只需要擁有列表對象。例如,如果你想完全用["baz", 3]
更換子列表,你可以在上面做一個切片賦值:
a = next(x for x in A if "foo" in x)
a[:] = ["baz", 3]
無論哪種配方,你如果找不到搜索項獲得StopIteration
例外。您可以使用next()
的第二個參數來返回None
或其他內容。在這種情況下,你必須把括號圍繞genexp:
a = next((x for x in A if "foo" in x), None)
[:]和列表(a)之間是否有任何偏好?我通常選擇後者 – user3684792 2015-02-09 22:39:29
在'='符號的左側,'a [:]'是一個切片分配,而不是一個副本。 'list(a)'不會在'='的左邊工作。對於複製列表,「a [:]」比「list(a)」稍快,但在大多數情況下你可能不會注意到。在這種情況下,我會說這個問題是個人風格問題。任何有能力的Python程序員都會認爲它是一個副本。 – kindall 2015-02-09 22:40:22
只是使事情變得複雜起來,你可以使用filter
>>> a = [['foo',1],['bar',2]]
>>> list(filter(lambda x:'foo'in x , a))
[['foo', 1]]
>>> a = [['foo',1],['bar',2],[1,'foo']]
>>> list(filter(lambda x:'foo'in x , a))
[['foo', 1], [1, 'foo']]
- 1. 搜索元元素列表
- 2. 搜索列表中的元素列表
- 3. 在列表中搜索元素Python
- 4. 搜索元素列表
- 5. 搜索列表的元素
- 6. 在Python中搜索某個元素和字符串內的元素的列表
- 7. Python列表搜索
- 8. 搜索Python列表
- 9. 按Python中第n個元素搜索元組列表
- 10. 從列表的列表的內部列表獲取第n個元素在Python
- 11. Scheme:在列表和子列表中搜索元素
- 12. Python:通過元組列表搜索
- 13. 列表在另一個列表中的搜索元素
- 14. 搜索列表中的元素
- 15. Drools中列表中的搜索元素
- 16. 如何搜索列表元素,STL C++
- 17. 元素不在列表中與Python 3
- 18. Python列表輸入搜索
- 19. Python搜索元組方面的列表
- 20. Python搜索嵌套列表
- 21. 使用python如何根據作爲內部列表元素的鍵在列表列表中查找元素?
- 22. Prolog - 搜索元素列表,如果找到元素,則打印列表
- 23. Python - 索引列表中的元素
- 24. 按元素列表列出的元素列表python
- 25. 的Python 3:內部詞典列表,列表索引超出範圍
- 26. 在散列表內部檢索列表。
- 27. LINQ到外部列表索引添加到內部元素
- 28. 快速搜索python列表?
- 29. 搜索從列表在Python
- 30. 動態搜索python列表
好吧,讓我們備份:如果我們有一個列表,你怎麼了知道一個元素是否在它內部? – 2015-02-09 22:31:39
如果表達式「if元素在列表中」返回「True」。 – 2015-02-09 22:33:24
好吧,那麼如何遍歷列表清單以查看最內層是否有內容? – 2015-02-09 22:35:49