如何在列表中搜索列表

时间:2019-07-18 23:19:41

标签: python nested-lists

我正在尝试搜索列表中的列表以查找和更改其中一项。

我希望能够搜索列表中的第0和第1个项目,如果它们符合我的标准,我想更改/更新第2个项目。

我了解您可以使用枚举进行搜索,但是正在努力理解/编写此代码。

myList = [['blue', 'house', 'go', 'no'],['yellow', 'mansion', 'stop', 'yes']]

我希望能够在列表中搜索第0个元素为“ blue”和第1个元素为“ house”,然后将第2个元素更改为“ stop”。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

您可以对myList进行切片,因此无需使用and即可进行两个比较

myList = [['blue', 'house', 'go', 'no'],['yellow', 'mansion', 'stop', 'yes']]
for m in myList:
    if m[:2] == ['blue', 'house']:
        m[2] = 'stop'
print(myList)

[['blue', 'house', 'stop', 'no'], ['yellow', 'mansion', 'stop', 'yes']]

答案 1 :(得分:1)

使用列表理解的单线模式

>>> [e if e[: 2] != ['blue', 'house'] else (e[: 2] + ['stop'] + e[3: ]) for e in myList]
[['blue', 'house', 'stop', 'no'], ['yellow', 'mansion', 'stop', 'yes']]

答案 2 :(得分:1)

使用for循环并检查当前内部列表的第一个元素等于blue和第二个元素显着等于house可能是最容易理解的方法,如果您还没有学习过列表切片的话还:

my_lists = [['blue', 'house', 'go', 'no'],['yellow', 'mansion', 'stop', 'yes']]
for inner_list in my_lists:
    if inner_list[0] == 'blue' and inner_list[1] == 'house':
        inner_list[2] = 'stop'
print(my_lists)

输出:

[['blue', 'house', 'stop', 'no'], ['yellow', 'mansion', 'stop', 'yes']]

答案 3 :(得分:0)

您可以使用开箱包装以获得更清洁的解决方案:

myList = [['blue', 'house', 'go', 'no'],['yellow', 'mansion', 'stop', 'yes']]
result = [[*a, 'stop' if a == ['blue', 'house'] else b, c] for *a, b, c in myList]

输出:

[['blue', 'house', 'stop', 'no'], ['yellow', 'mansion', 'stop', 'yes']]