какой простой способ увеличить длину строки до произвольного целого числа x? как 'a' переходит в 'z', а затем переходит от 'aa' к 'zz' к 'aaa' и т. д.
увеличение размера строки через цикл
14.05.2010
- Откуда здесь
x
? Например, если строка равна abc, аx
равно 4, строка становится abg? 15.05.2010 - ой. Я хотел сказать, что строка становится длинной x, поэтому, если x = 4, строки будут 'aaaa' ... 'zzzz' 15.05.2010
- В некоторой степени см. этот код гольф. 15.05.2010
Ответы:
1
Это должно делать свое дело:
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:
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
14.05.2010
2
Вот мое решение, похожее на решение Адама, за исключением того, что оно не рекурсивное. :]
.
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.)
15.05.2010
3
Вы можете умножить строку на целое число. Например
>>> 'a' * 2
'aa'
>>> 'a' * 4
'aaaa'
>>> 'z' * 3
'zzz'
>>> 'az' * 3
'azazaz'
14.05.2010
4
Определите x. В этом примере я использую x = 5
.
x = 5
import string
for n in range(1,x+1):
for letter in string.ascii_lowercase:
print letter*n
14.05.2010
letter*0
. 15.05.2010 Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..