出于模拟目的,我想生成一个字符串对列表。每个字符串对由两个字符串组成。每个字符串由随机生成的数字组成。字符串的长度也是随机数。如何使用Numpy
实现此功能?
答案 0 :(得分:4)
这是一个无限的发电机。您可以从中获取一部分(显示在最后一行),也可以直接迭代它:
import itertools
import random
def one_string():
l = random.randint(1, 5)
return "".join(random.choice("0123456789") for _ in range(l))
def string_pairs():
while True:
yield one_string(), one_string()
print(list(itertools.islice(string_pairs(), 10)))
产生
[('840', '452'), ('20', '4651'), ('784', '589'), ('1', '08211'), ('809', '2103'), ('48975', '46884'), ('307', '83913'), ('88512', '212'), ('57', '11772'), ('38', '14')]
答案 1 :(得分:3)
您不需要numpy
来获得如此简单的结果。您所需要的只是列表理解,random.randint
为:
>>> from random import randint
>>> [(str(randint(0, 99999)), str(randint(0, 99999))) for _ in range(10)]
上述解决方案将返回10对随机数字符串,每个字符串的最大长度为5位。 random.randint
这里会生成0
到99999
之间的随机数,由于选择是随机的,因此位数也是随机的。然后简单地将它们输入到字符串中以获得所需的结果。
示例结果:
[('8655', '9023'), ('7398', '7465'), ('8595', '4994'), ('8532', '9251'), ('196', '5911'), ('4219', '6240'), ('7628', '8162'), ('256', '9675'), ('4466', '4814'), ('6459', '3798')]