【发布时间】:2019-07-24 18:33:00
【问题描述】:
我有一个包含一些数字的列表。我必须一一搜索这些数字以检查它们是否存在于第二个列表中。但我必须完全检查第一个列表中的号码,即如果不存在完全匹配,则从号码中删除最后一位数字并再次搜索直到找到匹配项。我必须对列表 1 的每个数字的所有数字继续这样做。
示例:
z = ['48761', '3876', '481']
p = ['3876112','8935']
我选择3876112...在列表z 中搜索它。如果不匹配,我搜索387611,如果不匹配...我搜索38761 等等...在此过程中的任何时候,如果找到匹配项,我必须返回找到的匹配项,然后开始做同样的事情为8935。
注意:如果根本不匹配,我需要返回“不匹配”,并且该号码只有一次。
z = ['48761', '3876', '481']
p = ['3876112','8935']
for m in range(0,len(p)):
x = p[m]
for i in range(0,len(x)):
y = x
for words in z:
if y == words:
print("Found")
x = x[:-1]
print("Not found")
结果:
Found
Not found
Not found
另外,当我在打印行之间添加时,我注意到上面的代码在打印 Found 之前会额外运行一次循环。
【问题讨论】:
-
当你说“return”时,你的意思是真的“print”吗?
-
我很确定你有一个缩进错误,由于输入的原因,这是偶然的。
x = x[:-1]行应该与最内层循环内联。意义应该在那个循环之后发生一次。 -
z 和 p 实际上是来自 2 列的值。结果将在新列中找到或未找到。
-
@Tomerikoo 当我尝试将 x = x[:-1] 与内部循环内联时,我没有得到任何输出。
-
很奇怪。为我工作...另请参阅将
3876112更改为387612时会发生什么
标签: python python-3.x list