|
本帖最后由 hellowo_f99ya 于 2021-1-21 13:46 编辑
for i in lis1:
for j in lis2:
if i == j:
lis1[lis1.index(i)]=0
lis2[lis2.index(j)]=1
break
print(lis1,lis2)
#加个break就好了,结果是只把lis2中的第一个'a'替换掉。因为第一次遍历到lis2的时候就已经把lis1的第一个元素变掉了,lis1中没有'a'了,i赋值是'a',第二次发现lis2中第二个元素还是'a',跟'i'相等,就会执行if后面的语句,但是index(i)找不到'a'的索引,所以报错。如果lis2是'dcba'互不相等的这种,每一个i只有一个j对应,就只会执行一次if后的语句,就没问题。
如果想改变lis2中的所有'a',则在改变lis2中元素之前利用元素把索引赋给一个临时变量,这个临时变量如果遍历到lis2的最后一个元素说明lis2全部被改变了,这个时候再改变lis1中的第一个元素
lis1, lis2 = list("abcd"), list("aaaa")
for i in lis1:
for j in lis2:
if i == j:
tmp=lis2.index(j)
lis2[lis2.index(j)]=1
if tmp==len(lis2)-1:
lis1[lis1.index(i)]=0
print(lis1,lis2)
结果是[0, 'b', 'c', 'd'] [1, 1, 1, 1] |
|