如何构建这个嵌套的 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)