你需要转换成int,字符串"134"
不等于整数134
:
if int(each.split('.')[0]) in firstNode:
或存储的字符串列表:
firstNode =["134", "135"]
,如果你想找到,如果any匹配,你创建firstNode,你可以使用str.startswith这可以采取一个子串的元组来尝试和匹配,如果我们在eac之后添加.
^h元素,我们会得到确切的匹配:
USAdetail =['134.250.7.8', '1.39.35.138', '100.43.90.10','101.43.90.10', '101.43.90.11']
firstNode = ("134.", "135.")
if any(x.startswith(firstNode) for x in USAdetail):
print("Successful")
或将它们存储为一个set字符串和使用in
:
USAdetail =['134.250.7.8', '1.39.35.138', '100.43.90.10','101.43.90.10', '101.43.90.11']
firstNode = {"134", "135"}
if any(x.split(".",1)[0] in firstNode for x in USAdetail):
print("Successful")
如果不控制firstnode的创作,你能坚持到铸造为int和从firstnode制定一套:
USAdetail =['134.250.7.8', '1.39.35.138', '100.43.90.10','101.43.90.10', '101.43.90.11']
firstNode = [134, 135]
st = set(firstNode)
if any(int(x.split(".",1)[0]) in st for x in USAdetail):
print("Successful")
any
将在第一场比赛短路,如果没有匹配它会返回False,集合L ookups是O(1)
因此对于大量的数据将是一个非常有效的解决方案。
thx为彻底的答案! –