需要强制转换为int,字符串"134"不等于整数134:
if int(each.split('.')[0]) in firstNode:
或者在列表中存储字符串:
firstNode =["134", "135"]
如果您想查找any 是否匹配并创建firstNode,则可以使用str.startswith,如果我们添加.,它可以使用子字符串元组来尝试匹配在每个元素之后,我们将得到完全匹配:
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,设置查找为 O(1),因此对于大量数据将是一个非常有效的解决方案。