此问题在此处已有答案:
(32个答案)
两个月前关门了。
下面是我在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”,因为USAdetail中有一个“134”。然而,它似乎被覆盖了,USAdetail中的最后一个元素以“101”开头,这就是为什么它没有打印出“successful”。
我只是想知道如何更改代码,以确保USAdetail中有任何以134/135开头的元素,它将成功打印出来。非常感谢!
1条答案
按热度按时间vlju58qv1#
需要强制转换为int,字符串
"134"
不等于整数134
:或在列表中存储字符串:
如果你想找到是否有匹配,你可以使用string.startswith,它可以接受一个子字符串元组来尝试和匹配,如果我们在每个元素后面添加一个
.
,我们将得到精确匹配:或者将它们作为字符串存储在set中,并使用
in
:如果你不控制firstnode的创建,你可以坚持转换为int,并从firstnode创建一个set:
any
将在第一次匹配时短路,如果没有匹配则返回False,设置查找是O(1)
,因此对于大量数据将是非常有效的解决方案。