我需要一个长达100000个字符的字符串。在python中生成这样一个字符串的最有效和最短的方法是什么? 字符串的内容并不重要。
答案 0 :(得分:5)
类似的东西:
'x' * 100000 # or,
''.join('x' for x in xrange(100000)) # or,
from itertools import repeat
''.join(repeat('x', times=100000))
或者有点混淆字母:
from string import ascii_letters
from random import choice
''.join(choice(ascii_letters) for _ in xrange(100000))
或者,对于一些随机数据:
import os
s = os.urandom(100000)
答案 1 :(得分:3)
你可以简单地做
s = 'a' * 100000
答案 2 :(得分:2)
由于效率很重要,这里是目前提到的一些方法的快速基准:
$ python -m timeit "" "'a'*100000"
100000 loops, best of 3: 4.99 usec per loop
$ python -m timeit "from itertools import repeat" "''.join(repeat('x', times=100000))"
1000 loops, best of 3: 2.24 msec per loop
$ python -m timeit "import array" "array.array('c',[' ']*100000).tostring()"
100 loops, best of 3: 3.92 msec per loop
$ python -m timeit "" "''.join('x' for x in xrange(100000))"
100 loops, best of 3: 5.69 msec per loop
$ python -m timeit "import os" "os.urandom(100000)"
100 loops, best of 3: 6.17 msec per loop
毫不奇怪,在发布的中,使用字符串乘法是迄今为止最快的。
另请注意,将单个字符串乘以多字符串字符串(以获得相同的最终字符串长度)更有效。
$ python -m timeit "" "'a'*100000"
100000 loops, best of 3: 4.99 usec per loop
$ python -m timeit "" "'ab'*50000"
100000 loops, best of 3: 6.02 usec per loop
$ python -m timeit "" "'abcd'*25000"
100000 loops, best of 3: 6 usec per loop
$ python -m timeit "" "'abcdefghij'*10000"
100000 loops, best of 3: 6.03 usec per loop
在Python 2.7.3上测试
答案 3 :(得分:1)
字符串可以使用乘法运算符:
"a" * 100000
答案 4 :(得分:1)
尝试制作空白字符数组。
import array
longCharArray = array.array('c',[' ']*100000)
这将分配一个大小为100000的' '
字符数组
longCharArray.tostring()
将转换为字符串。
答案 5 :(得分:0)
选择一些角色并重复100000次:
"a"*100000
为什么你会想要这是另一个问题。 。
答案 6 :(得分:0)
您可以尝试这样的事情:
"".join(random.sample(string.lowercase * 385,10000))
答案 7 :(得分:0)
作为一个班轮:
''.join([chr(random.randint(32, 126)) for x in range(30)])
更改range()值以获得不同长度的字符串;更改randint()的范围以获取不同的字符集。