问题描述
也许这是一个菜鸟问题,但我怎样才能在每次重复时得到一个新的随机数?
realport = random.randint(portstarts,portends)
liste = list(itertools.repeat('{}:{}:{}:{}'.format(hostname,realport,username,password),amount))
解决方法
正如 ShadowRanger 评论的那样,itertools.repeat
可能不是您想要的。
“list comprehension”可能是表达您想要的更好的方式:
def getport():
return random.randint(portstarts,portends)
liste = [
'{}:{}:{}:{}'.format(hostname,getport(),username,password)
for _ in range(amount)
]
如果您希望所有端口都是唯一的,那么您可以改用 random.sample
来“采样而不替换”:
liste = [
'{}:{}:{}:{}'.format(hostname,port,password)
for port in random.sample(range(portstarts,portends+1),amount)
]
见,例如How to incrementally sample without replacement? 用于 Python 中无需替换的各种采样方式