Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 3.x_Python 2.7 - Fatal编程技术网

Python 生成所需长度的所有字符串

Python 生成所需长度的所有字符串,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我想生成所有长度从1到max_length不等的随机字符串。python中是否有一个内置函数可以做到这一点?如果没有,请告诉我如何做,或直接我的职位,涵盖这类问题。提前感谢。随机字符串: import random def get_random_string(alphabet, slen): return ''.join(random.choice(alphabet) for _ in xrange(slen)) print get_random_string('0123456789'

我想生成所有长度从1到max_length不等的随机字符串。python中是否有一个内置函数可以做到这一点?如果没有,请告诉我如何做,或直接我的职位,涵盖这类问题。提前感谢。

随机字符串:

import random
def get_random_string(alphabet, slen):
    return ''.join(random.choice(alphabet) for _ in xrange(slen))

print get_random_string('0123456789', 5) # prints e.g. 62247
按字典顺序排列的所有字符串(感谢@DSM提醒我有关
itertools
):


您可以使用
random.sample()


这不是真正的“随机”字符串,而是所有字符串,对吗?可以找到一个解决方案,它与要求所有从1到最大长度的字符串相同(随机性与此无关,因为您会遇到所有可能的字符串)。即使是最小的最大长度值,也有很多字符串,特别是如果考虑所有可能的Unicode字符。您确定要生成所有这些文件吗?为什么需要这个?有256**N个长度为N的不同字符串。为什么需要生成所有这些字符串来计算这个值?细微的挑剔:
random。sample
返回唯一的元素,因此字符串是字母表中随机排列的子集(如果
max_length
len(ascii\u小写)
),则会失败。否,我认为@nneonneo是在了解这样一个事实,OP真的想要每一个可能的单词,而不仅仅是字母表某个子集的每一个可能的混乱。例如,您永远不会得到“aa”。
def gen_all_strings(alphabet,slen):return(“”.join(w)For w in itertools.product(alphabet,repeat=slen))
,否?除了顺序的改变。有时,我忘记了
itertools
的存在……你说得对,这是一个较短的解决方案。(如果您想让它们按顺序排列,可以使用[:-1])
import itertools
def gen_all_strings(alphabet, slen):
    it = itertools.product(alphabet, repeat=slen)
    return (''.join(s) for s in it)

print list(gen_all_strings('abc', 2)) # prints ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']
In [28]: from string import ascii_lowercase as asl

In [29]: import random

In [30]: max_length=10

In [31]: for x in xrange(1,max_length+1):
   ....:     ''.join(random.sample(asl,x))
   ....:     
   ....:     
Out[31]: 'k'
Out[31]: 'jy'
Out[31]: 'ldo'
Out[31]: 'ivlr'
Out[31]: 'gqelt'
Out[31]: 'gbvnqw'
Out[31]: 'baestog'
Out[31]: 'kyijhmvn'
Out[31]: 'toshxklwb'
Out[31]: 'wihtmouexg'