Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 随机生成随机长度的随机数字字符串的元组列表_Python_Python 2.7_List_Numpy_Scipy - Fatal编程技术网

Python 随机生成随机长度的随机数字字符串的元组列表

Python 随机生成随机长度的随机数字字符串的元组列表,python,python-2.7,list,numpy,scipy,Python,Python 2.7,List,Numpy,Scipy,出于模拟目的,我想生成一个字符串对列表。每个字符串对由两个字符串组成。每个字符串由随机生成的数字组成。字符串的长度也是随机数。如何使用Numpy实现此功能?这是一个无限的生成器。您可以获取它的一部分(如最后一行所示),也可以直接对其进行迭代: import itertools import random def one_string(): l = random.randint(1, 5) return "".join(random.choice("0123456789") fo

出于模拟目的,我想生成一个字符串对列表。每个字符串对由两个字符串组成。每个字符串由随机生成的数字组成。字符串的长度也是随机数。如何使用
Numpy
实现此功能?

这是一个无限的生成器。您可以获取它的一部分(如最后一行所示),也可以直接对其进行迭代:

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')]

你不需要
numpy
就能得到如此简单的结果。您所需要的只是以下列表:

上述解决方案将返回10对随机数字符串,每个字符串的最大长度为5位
random.randint
此处将生成介于
0
99999
之间的随机数,由于选择是随机的,因此位数也将是随机的。然后简单地键入cast-to-string以获得所需的结果

样本结果:

[('8655', '9023'), ('7398', '7465'), ('8595', '4994'), ('8532', '9251'), ('196', '5911'), ('4219', '6240'), ('7628', '8162'), ('256', '9675'), ('4466', '4814'), ('6459', '3798')]

为什么是努比?这是针对数组和矩阵操作的,而这个问题不是。到目前为止,您尝试了什么?请发布您的代码+1,我不太清楚OP为什么要使用
numpy
执行此操作。哦,有一些使用纯Python的很好的解决方案,比如这个。为什么不使用string模块中的string.digits,而不是键入整个序列呢?因为如果我键入它,我可以更容易地看到它在做什么,而“0123456789”比string.digits短两个字符。我们认为在Python的未来版本中,数字集会发生变化吗?
[('8655', '9023'), ('7398', '7465'), ('8595', '4994'), ('8532', '9251'), ('196', '5911'), ('4219', '6240'), ('7628', '8162'), ('256', '9675'), ('4466', '4814'), ('6459', '3798')]