我有这个列表列表(我相信),如下所示标记为'输出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']
答案 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)