Как создать несколько списков глубины диапазонов в Python? - PullRequest
0 голосов
/ 20 февраля 2019

Предположим, у вас есть метка, которая увеличивается в несколько точек:

Например, 1-A-1.Предположим, что третье место может увеличиваться до 10 раз (1-A-10), после чего A станет B: 1-B-1.

Затем этот процесс повторяется до 1-Z-10, и после этого увеличивается 2-A-1.

Как я могу написать универсальную функцию, которая будет генерировать список, который имеет все комбинацииот 1-A-1 до 10-Z-10?

1 Ответ

0 голосов
/ 20 февраля 2019

Это выглядит как идеальный вариант использования для itertools.product

labels = itertools.product(range(1, 11), string.ascii_uppercase, range(1, 11))
# (1, 'A', 1) (1, 'A', 2) (1, 'A', 3) ...

product(as, bs, cs, ds, ...) создает генератор, который выдает значения, похожие на многоуровневый цикл for:

for a in as:
    for b in bs:
        for c in cs:
            for d in ds:
                yield (a, b, c, d)

поэтому, чтобы использовать это, вы можете либо напрямую привести к списку:

result = [f"{a}-{b}-{c}" for a, b, c in labels]

, либо перебрать labels

for label in labels:
    a, b, c = label
    formatted = f"{a}-{b}-{c}"
    # do something with formatted
...