Nano Hash - криптовалюты, майнинг, программирование

увеличение размера строки через цикл

какой простой способ увеличить длину строки до произвольного целого числа 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
  • Исправлена ​​проблема с обратным движением. Проголосуйте за мой ответ пожалуйста :) 15.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
  • Посмотрим, правильно ли я понял: вы хотите перебрать все строки между 'aaaa' и 'zzzz', ('aaaa', 'aaab', 'aaac', .... 'zzzz'). 15.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
  • Возможно, вы захотите установить начальное значение оператора диапазона, поскольку самое первое, что печатается с использованием этого кода, - это 26 строк пробелов, потому что вы сначала делаете letter*0. 15.05.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..