Что такое простой способ увеличить длину строки до произвольного целого x? как 'a' переходит в 'z', а затем переходит к 'aa' в 'zz' в 'aaa' и т. д.Увеличение размера строки через цикл
ответ
Это должно сделать трюк:
def iterate_strings(n):
if n <= 0:
yield ''
return
for c in string.ascii_lowercase:
for s in iterate_strings(n - 1):
yield c + s
Он возвращает генератор. Вы можете перебирать его для цикла:
for s in iterate_strings(5)
Или получить список строк:
list(iterate_strings(5))
Если вы хотите перебрать короткие строки тоже, вы можете использовать эту функцию:
def iterate_strings(n):
yield ''
if n <= 0:
return
for c in string.ascii_lowercase:
for s in iterate_strings(n - 1):
yield c + s
, хотя он идет назад, круто! – calccrypto
Исправлена проблема с обратным ходом. Голосуйте за мой ответ, пожалуйста :) – Adam
Я пробовал, но, видимо, мне нужно 15 репутации – calccrypto
Вы можете умножить строку на целое число. Например,
>>> 'a' * 2
'aa'
>>> 'a' * 4
'aaaa'
>>> 'z' * 3
'zzz'
>>> 'az' * 3
'azazaz'
да, но я хочу пробежать все перестановки – calccrypto
Давайте посмотрим, прав ли вы: вы хотите перебирать все строки между 'aaaa' и 'zzzz', ('aaaa', 'aaab', 'aaac' , .... 'zzzz'). – Adam
правильный. до тех пор, пока строка не будет длинна x. – calccrypto
Определить x. В этом примере я использую x = 5
.
x = 5
import string
for n in range(1,x+1):
for letter in string.ascii_lowercase:
print letter*n
Вот мое решение, похожее на Адама, за исключением того, что оно не является рекурсивным. :]
.
from itertools import product
from string import lowercase
def letter_generator(limit):
for length in range(1, limit+1):
for letters in product(lowercase, repeat=length):
yield ''.join(letters)
И это возвращает generator
, так что вы можете использовать for
цикл для перебора над ним:
for letters in letter_generator(5):
# ...
Удачи!
(Это второй раз, когда я сегодня нашел itertools.product()
полезным. Woot.)
- 1. Увеличение размера строки кеша
- 2. Увеличение размера импорта лимита строки
- 3. Увеличение счетчика при повторении через цикл foreach
- 4. Автоматическое увеличение размера TextArea
- 5. Увеличение размера изображения tabBarItem
- 6. Увеличение размера текстового поля
- 7. Увеличение размера кучи
- 8. toDataURL() увеличение размера файла
- 9. Увеличение размера CheckBox
- 10. Увеличение размера календаря
- 11. Увеличение размера div
- 12. Увеличение размера кучи Java
- 13. Увеличение размера загрузки Wordpress
- 14. Увеличение размера HTML-формы
- 15. увеличение размера шрифта непрерывно
- 16. Увеличение размера списка коробки
- 17. Увеличение размера заголовка окна
- 18. Увеличение размера вкладки?
- 19. Увеличение размера загрузчика материала
- 20. Увеличение размера свойства наведения
- 21. JQuery Цикл через строки таблицы
- 22. Цикл командной строки через каталоги
- 23. Вычислить разность строки через цикл
- 24. Увеличение размера структуры, а затем возврат их обратно к исходному размеру и увеличение размера снова
- 25. Увеличение размера буфера в JBSQL
- 26. Php Изменение размера изображения Увеличение размера изображения
- 27. Увеличение строки
- 28. Увеличение максимального повторения SharpSNMP вызывает исключение размера буфера через GPRS
- 29. Увеличение размера шрифта динамически на каждый клик через JavaScript
- 30. Увеличение размера вектора in for loop
Где 'x' бывают? Например, если строка «abc» и «x» равна 4, строка становится «abg»? –
oops. я хотел сказать, что строка становится х длинной, поэтому, если x = 4, строки будут «aaaa» ... «zzzz» – calccrypto
В некоторой степени, см. [this code golf] (http://stackoverflow.com/questions/ 2634427/код-гольфы-числовой-эквивалентный из-ан-имени столбца-первенствовать /). –