我试图使用这段代码制作大量的 ips 来进行测试:
ip_is = [i for i in range(256)]
ports = [i for i in range(1024,49152)]
return [str(i1)+"."+str(i2)+"."+str(i3)+"."+str(i4)+":"+str(p) for i1,i2,i3,i4,port in ip_is,ip_is,ip_is,ip_is,ports]
问题出在第 3 行的 ip 列表中。如果有一种方法可以一次完成,或者如何以一种懒惰的方式一次完成一个? 我对 python 很菜鸟:P。
感谢您的帮助:)
最佳答案
您正在尝试(完全不考虑语法问题)列出
256 * 256 * 256 * 256 * (49152 - 1024)
字符串——即 206708186021888 个字符串……大约二十万亿个字符串。
如果您每微秒制作一个,那将花费您 6.5 年的时间(即使不考虑寻找 PB 级 RAM 来保存它们的问题)。
我知道你想“制作大量的 ips 用于测试”,但这方式 太太多了。
为什么不从这个庞大的集合中随机抽样呢?例如:
import random
def random_address():
ip = tuple(random.randrange(256) for i in range(4))
port = random.randrange(1024, 49152)
format = '.'.join(['%s'] * 4) + ':%s'
return format % (ip + (port,))
现在,如果您想要(例如)一百万个这样的字符串用于测试,只需执行以下操作:
millionstrings = [random_address() for i in xrange(1000*1000)]
关于python - 太多值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029132/