python - 太多值问题

标签 python

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

相关文章:

python - PySide 的 QTest 未选中复选框

python - 骰子实验结果的分布

python - 我可以在字典中包含 3 个元素吗

python - 在 Python 中以编程方式启动 HiveThriftServer

python - Python 中的 R 风格负索引。不要切片

python - 在 Jenkins 中发送电子邮件时添加 png 图像和表格 html

python - 将有序字典列表转换为嵌套列表

python - 派生查询上的 Django 内连接

python - Django表单提交后修改数据

python - 查找第n个 '|'之后的子串