Skip to main content
 首页 » 编程设计

python之太多值问题

2025年05月04日8wayfarer

我试图使用这段代码制作大量的 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)]