Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 用于循环覆盖的Python_Python 2.7_Python 3.x_For Loop_Overwrite - Fatal编程技术网

Python 2.7 用于循环覆盖的Python

Python 2.7 用于循环覆盖的Python,python-2.7,python-3.x,for-loop,overwrite,Python 2.7,Python 3.x,For Loop,Overwrite,以下是我在Python 3中的代码: firstNode =[134, 135] USAdetail =['134.250.7.8', '1.39.35.138', '100.43.90.10','101.43.90.10', '101.43.90.11'] for each in USAdetail: if each.split('.')[0] in firstNode: print ("successful") 我认为它应该打印出“successful”,因为其中有一个

以下是我在Python 3中的代码:

firstNode =[134, 135]
USAdetail =['134.250.7.8', '1.39.35.138', '100.43.90.10','101.43.90.10', '101.43.90.11']
for each in USAdetail:
   if each.split('.')[0] in firstNode:
       print ("successful")
我认为它应该打印出“successful”,因为其中有一个“134”。然而,它似乎是被覆盖的,USADEATILE中的最后一个元素以“101”开头,这就是为什么它没有打印“successful”


我只是想知道如何更改代码,以确保USATEADETAIL中是否有以134/135开头的元素,它将成功打印出来。非常感谢

您需要强制转换为int,字符串
“134”
不等于整数
134

if int(each.split('.')[0]) in firstNode:
或在列表中存储字符串:

firstNode =["134", "135"]
如果要查找if match并创建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.")

if any(x.startswith(firstNode ) for x in USAdetail):
    print("Successful")
或者将它们作为字符串存储在中,并在中使用

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)
因此对于大量数据将是一个非常有效的解决方案