我正在尝试搜索列表中的列表以查找和更改其中一项。
我希望能够搜索列表中的第0和第1个项目,如果它们符合我的标准,我想更改/更新第2个项目。
我了解您可以使用枚举进行搜索,但是正在努力理解/编写此代码。
myList = [['blue', 'house', 'go', 'no'],['yellow', 'mansion', 'stop', 'yes']]
我希望能够在列表中搜索第0个元素为“ blue”和第1个元素为“ house”,然后将第2个元素更改为“ stop”。
有什么想法吗?
答案 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']]