第一件事,你错过了一个相等的和加上第二个列表的两个元素之间的空白空间。
其次,根据您的脚本,您永远不会得到预期的输出。
那是因为“Nani”仅在第一个列表中,而不在第二个列表中,但是,由于您正在迭代第二个列表,您永远不会知道 Nani 仅在 name_1 中。
如果任务是检测第二个列表中缺失的元素,但存在于第一个列表中,则需要遍历 name_1,如下所示(我使用与您相同的样式):
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun']
list_match = []
non_match = []
for i in name_1:
try:
if i not in name_2:
non_match.append(i)
print(f"'{i}' is missing")
break
else:
list_match.append(i)
except Exception as e:
print(e)
程序在第一次检测到缺失元素时结束。要在每次评估缺失元素后终止程序,请注释 break 指令。
我不太了解变量 non_match 的存在以及 list_match 的存在,因为您没有使用它们。我还在第一个“if 语句”中用“break”替换了最后一个“if 语句”。
获取缺失元素的更简单方法是将两个列表视为集合并获取它们之间的差异,如下所示:
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun']
name_1 = set(name_1)
name_2 = set(name_2)
print("missing elements in the second list:\n", list(name_1 - name_2))
如果你颠倒减法的顺序,你会得到第一个列表中缺失的元素。
如果任务是获取两个列表中缺少的元素,你可以试试这个:
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun', 'Aldo']
name_1 = set(name_1)
name_2 = set(name_2)
print("mismatched elements:\n", list(name_1.symmetric_difference(name_2)))
编辑
根据新请求,代码如下:
name_1 = ['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
list_match = []
i = 0
while i < len(name_2):
if not name_2[i]:
print("empty element founded in position ", i)
elif name_2[i] not in name_1:
print(f"'{name_2[i]}' is extra column in position ", i)
#break
else:
list_match.append(i)
i+=1
输出:
empty element founded in position 2
'mari' is extra column in position 4
在第一次不匹配后从中断中删除注释以结束程序。
编辑 x2
RIEDITED
如果你想要这种输出:
nani is missing in position 2
'mari' is extra column in position 4
'nani' is extra column in position 2
如果你需要使用列表,你可以试试这个(但我强烈建议使用集合)
name_1=['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
list_match = []
i = 0
while i < len(name_2):
if not name_2[i]:
print(name_1[i]," is missing in position ", i)
elif name_2[i] not in name_1:
print(f"'{name_2[i]}' is extra column in position ", i)
#break
else:
list_match.append(name_2[i])
i+=1
for el in name_1:
if el not in list_match:
print(f"'{el}' is extra column in position ", name_1.index(el))
编辑 x3
试试这个
name_1 = ['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
i = 0
list_match = []
while i<len(name_2):
if not name_2[i]:
print(name_1[i], " is missing in position ", i)
elif name_2[i] in name_1:
list_match.append(name_2[i])
i+=1
for el in name_1:
if el not in list_match:
print(el, " is extra column")
如果你需要的输出是这个:
nani is missing in position 2
nani is extra column
希望对您有所帮助。