我目前正在做一个Python的在线初学者课程,并被这一元素困住了。
我有
lista=['a','d','g','p','l','g','r','e']
listb=['a','p','p','l','e']
listc=['','','','_']
我正在比较列表a中的字母,看看它们是否在列表B中,如果为真,则用该字母替换列表C中的相同索引。下面的代码在一个函数中:
null
for a in listA:
for b in listB:
if a==b:
listC.append(listB.index(b))
stringC = str(listC)
print(stringC)
null
问题是列表C被追加到正确的位置,但是使用了索引的int值。
如何替换字母而不是索引值?
非常感谢!
您应该使用:
listA=['a','d','g','p','l','g','r','e']
listB=['a','p','p','l','e']
listC=['','','','','_']
for a in range(len(listA)):
letter = listA[a]
if letter in listB:
listC[listB.index(letter)] = letter
stringC = str(listC)
print(stringC)
它更快,更容易理解,而且有效(尽管我不完全确定我理解了你的问题)。
假设我理解这个问题,您不希望追加到listc
,而是希望修改listc的元素:
for a in listA:
if a in listB:
listC[listB.index(a)] = a
如果您正在搜索并试图比较字符的位置
listA=['a','d','g','p','l','g','r','e']
listB=['a','p','p','l','e']
listC=['','','','','_']
minlen = min(len(listA), len(listB))
for elem in range(minlen):
if listA[elem] == listB[elem]:
listC[listB.index(listA[elem])] = listA[elem]
print("{}".format(listC))
如果只检查它们是否可用,Wiseman的答案看起来不错