我有一个包含一些数字的列表。我必须一一搜索这些数字以检查它们是否出现在第二个列表中。但是我必须完全检查第一个列表中的数字,即如果不存在完全匹配,则从数字中删除最后一位数字并再次搜索直到找到匹配。我必须对列表 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 之前额外运行了一次循环。
由于您使用的是字符串而不是实际数字,因此您可以使用str.startswith()
:
z = ['48761', '3876', '481']
p = ['3876112','8935']
res = []
for target in p:
for num in z:
if target.startswith(num):
res.append("Found")
break
else:
res.append("Not found")
或者干脆:
res= ["Found" if any(target.startswith(num) for num in z) else "Not Found" for target in p]
现在,假设您的数据框是df
您可以简单地执行以下操作:
df["res"] = res
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句