问题描述
有什么方法可以仅使用指定的元素来更新列表的列表(在这种情况下为4)? 例如:
list1 = [['a','b','c'],['a','a','c']]
list2 = [['b',['b','a']]
list3 = [['c','c','a'],'b']]
list4 = [['c','b']]
如果我想用字符串'b'更新 list1 ,它应该输出:
[[[b,b,b,c],[b,a,b,b]]
因此,从列表1内的 第一个列表 中,第一个元素'a'被替换为'b ',因为其他列表包含字符串'b'(在本例中为list2)。但是,最后一个元素'c'并未更新,因为没有列表包含字符串'b'。
我尝试了嵌套多个for循环,但是效率极低。
for list in list1:
for i in list:
if i != 'b':
for list in list2:
for j in list:
if j == b:
i = 'b'
我要存档的是:如果其他列表中有“ b”,请将list1中的元素更新为“ b”
解决方法
您可以使用enumerate
遍历数组,查看是否有其他列表包含指定的元素(在您的情况下为'b'
),并更新其中的任何元素。
for v,a in enumerate(list1):
for v1,b in enumerate(a):
if 'b' in [i[v][v1] for i in [list2,list3,list4]]:
list1[v][v1] = 'b'