题目来自一个朋友的询问。对比a b两个列表,一次对比a b列表中的元素,(1)如a[0] b[0],若两者相同,输出O;(2)若不同,b元素查找是否在a中存在相同的元素,若有输出X,没有不输出;(3)但此时a中的那个元素,对应相同索引的b元素,不可与a相同,如果相同,将不算。
解题思路:
由于列别默认对比,是顺序对比,但会出现在之后的对比元素中出现(3)这种情况。因此采用逆向对比。
#逆向对比
'''
#a = ['g', 's', 'g', 'g']
#b = ['s', 'g', 's', 's']
'''
a = ['s', 'r', 'g', 'g']
b = ['r', 'g', 'g', 'g']
l = len(a)
lst = []
on = []
for i in range(l-1,-1,-1):
if a[i] == b[i]:
on.append('O')
a.pop(i)
elif b[i] in a:
on.append('X')
print(on[::-1])
#正向对比(会有bug)
l = len(a)
lst = []
on = []
for i in range(l):
if a[i] == b[i]:
on.append('O')
lst.append(i)
elif b[i] in a[i:]:
on.append('X')
lst.append(a.index(b[i]))
else:
lst.append('')
if i in lst[:i]:
on[i] = ''
#lst[lst.index(i)] = ''
print(i, on, lst)