假设我有列表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. 在列表中搜索元素Python
- 3. 搜索元素列表
- 4. 在Python中搜索某个元素和字符串内的元素的列表
- 5. 搜索Python列表
- 6. Python列表搜索
- 7. 按Python中第n个元素搜索元组列表
- 8. Scheme:在列表和子列表中搜索元素
- 9. Python:通过元组列表搜索
- 10. 列表在另一个列表中的搜索元素
- 11. 搜索列表中的元素
- 12. Drools中列表中的搜索元素
- 13. 使用python如何根据作为内部列表元素的键在列表列表中查找元素?
- 14. LINQ到外部列表索引添加到内部元素
- 15. 快速搜索python列表?
- 16. 动态搜索python列表
- 17. 我可以使用LINQ搜索列表列表中的内部列表吗?
- 18. 集团Python列表元素
- 19. 列表元素的内部边框
- 20. Python列表搜索,元素比较和消除
- 21. Python:嵌套列表中元素的索引列表
- 22. Python列表索引超出范围,6000个元素列表
- 23. python:使3维列表元素值全部为零
- 24. 蟒蛇 - 搜索元素字典中的列表内
- 25. Python:访问嵌套列表中最内层列表的元素
- 26. 搜索内部阵列
- 27. 的Python:元组的搜索列表,删除整个索引
- 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