我需要有一個100000個字符長的字符串。在python中生成這樣一個字符串的最有效和最短的方法是什麼?
字符串的內容不重要。如何在python中生成具有特定長度的任意字符串?
回答
喜歡的東西:
'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)
謝謝,我使用了''abcd'* 25000'。那就是訣竅。 – 2012-07-20 09:00:21
@EdwinDrood注意''a'* 100000'比'「abcd」* 2500'快。在我的答案(社區wiki)中查看基準。 – 2012-07-20 09:22:51
你可以簡單地做
s = 'a' * 100000
字符串可以用乘法運算符:
"a" * 100000
只是挑選一些性格和重複100000次:
"a"*100000
你爲什麼會想這是另一個問題。 。 。
嘗試使陣列空白字符。
import array
longCharArray = array.array('c',[' ']*100000)
這將分配的大小100000
longCharArray.tostring()
的' '
字符的陣列將轉換爲字符串。
你可以嘗試這樣的事情:
"".join(random.sample(string.lowercase * 385,10000))
作爲一個班輪:
''.join([chr(random.randint(32, 126)) for x in range(30)])
變化範圍()值獲得不同長度的字符串;更改randint()的範圍以獲取不同的字符集。
因爲效率是很重要的,這裏有一個快速的標杆一些迄今提到的方法之一:
$ 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
感謝您的基準測試。我會牢記這一點。 – 2012-07-20 09:40:24
- 1. 從字符串中生成特定長度的所有變體
- 2. CommonCrypto生成具有16字符長度
- 3. 生成python中固定長度的隨機字符串列表
- 4. 任何具有特定長度的字符串的正則表達式模式
- 5. 從任意長度的字符串中提取子字符串
- 6. 生成字母/數字串具有固定長度
- 7. 在字符串中插入特定長度的特殊字符
- 8. 將字符串拆分爲具有特定長度的組
- 9. 如何生成指定長度的星號字符串?
- 10. C++字符串替換字符串的任意長度
- 11. 在C中生成固定長度的字符串#
- 12. 如何從python中的字符串中提取特定長度的數字?
- 13. 從給定字符生成等長的固定長度的隨機字符串
- 14. 在python中生成任意長度的數字的升序列表
- 15. 如何讀取任意長度的字符串?
- 16. 如何將字符串轉換爲任意長度的整數
- 17. python numpy任意長度字符串數組
- 18. 如何從每個字符串具有不同長度的數組中獲取字符串的特定部分?
- 19. 在Postgresql中存儲任意長度的字符串
- 20. 如何修復Winform C#中字符串生成器字符串的長度?
- 21. 如何讓MyHDL生成具有任意寬度的變量?
- 22. 生成隨機X長度字符串
- 23. 特定長度的C++字符串
- 24. 如何在perl中將字符串截斷爲特定長度?
- 25. 生成具有特定規則的字符串
- 26. 如何在固定長度字符串中對齊字符串
- 27. 字符串的長度(Python)
- 28. 在oracle中生成一定長度的字符串的所有可能組合
- 29. 具有不同長度字符的自定義Python字符串編解碼器?
- 30. 如何從長度爲28的兩個唯一字符串中生成長度爲28的唯一字符串?
爲什麼需要這個?如果以任何方式修改它,則會創建一個新字符串。 – eumiro 2012-07-20 08:50:53
*「最短的路是什麼」* ......代碼高爾夫最短,還是最有效率? – 2012-07-20 08:54:08
@eumiro我需要這個字符串在我寫的腳本中做一些測試。 – 2012-07-20 08:57:38