Python'for loop'代码无法按预期工作

时间:2015-08-31 21:57:12

标签: python for-loop

我有这个列表列表(我相信),如下所示标记为'输出A'。我应用标准的'for loop'代码来循环遍历列表以删除重复项,并获得OUTPUT B,与OUTPUT A结果相同。我需要一些帮助来理解为什么'for循环'没有按预期工作。

输出A

for hops in any_match(conn,r'((?:[0-9]{1,3}\.){3}[0-9]{1,3})'):
    ips = hops.split()
    print(ips)

[ '10.33.226.237']

[ '10.33.226.237']

[ '10.32.0.174']

[ '10.32.0.190']

[ '10.33.226.225']

[ '10.33.226.237']

输出B

for hops in any_match(conn,r'((?:[0-9]{1,3}\.){3}[0-9]{1,3})'):
    ips = hops.split()
    newlist = []
    for i in ips:
        if i not in newlist:
            newlist.append(i)
    print(newlist)

[ '10.33.226.237']

[ '10.33.226.237']

[ '10.32.0.174']

[ '10.32.0.190']

[ '10.33.226.225']

[ '10.33.226.237']

1 个答案:

答案 0 :(得分:1)

每场比赛似乎只有一个IP地址;您的split()调用仅返回一个项目的列表,因此您的嵌套循环仅查看该项目。由于您在外部列表的每次迭代中重置了重复列表,因此它始终为空。

我不太确定你为什么要这样做分裂和循环。相反,在循环外部初始化列表,然后删除这些调用:

newlist = []
for ip in any_match(conn,r'((?:[0-9]{1,3}\.){3}[0-9]{1,3})'):
    if ip not in newlist:
        newlist.append(i)
print(newlist)