如何构建这个嵌套的 for 循环?
How do I structure this nested for loop?
我正在尝试使用嵌套 for 循环打印值 192.168.42.0-255 和 192.168.43.0-255。
for i in range(42, 43):
for y in range(0, 255):
ip = "192.168." + str(i) + "." + str(y)
print ip
正在打印的是值 192.168.42.0-255。它似乎没有更改为 192.168.43。
range(x,y)
不包括y。
>>> range(42,43)
[42]
您的代码可以通过将第一个更改为 range(42,44)
并将第二个更改为 range(0,256)
(或只是 range(256)
)来修复。
如果您想完全摆脱嵌套循环,可以使用生成器表达式:
for ip in ('192.168.{}.{}'.format(i,j) for i in (42,43) for j in range(256)):
print(ip)
range(42,43)
只给出 [42]
。将其更改为仅 for i in (42,43):
.
正如@timgeb 指出的那样,您的第二个循环应该是 range(0, 256)
或只是 range(256)
;不是 255.
如果你想使用 range(a,b),那么它应该是 range(42,44) 而不是 43。
您可以使用 itertools.product()
在单个循环中组合数字组:
from itertools import product
ips = ('192.168.{}.{}'.format(*pair) for pair in product((42, 43), range(256)))
for ip in ips:
print(ip)
我正在尝试使用嵌套 for 循环打印值 192.168.42.0-255 和 192.168.43.0-255。
for i in range(42, 43):
for y in range(0, 255):
ip = "192.168." + str(i) + "." + str(y)
print ip
正在打印的是值 192.168.42.0-255。它似乎没有更改为 192.168.43。
range(x,y)
不包括y。
>>> range(42,43)
[42]
您的代码可以通过将第一个更改为 range(42,44)
并将第二个更改为 range(0,256)
(或只是 range(256)
)来修复。
如果您想完全摆脱嵌套循环,可以使用生成器表达式:
for ip in ('192.168.{}.{}'.format(i,j) for i in (42,43) for j in range(256)):
print(ip)
range(42,43)
只给出 [42]
。将其更改为仅 for i in (42,43):
.
正如@timgeb 指出的那样,您的第二个循环应该是 range(0, 256)
或只是 range(256)
;不是 255.
如果你想使用 range(a,b),那么它应该是 range(42,44) 而不是 43。
您可以使用 itertools.product()
在单个循环中组合数字组:
from itertools import product
ips = ('192.168.{}.{}'.format(*pair) for pair in product((42, 43), range(256)))
for ip in ips:
print(ip)