Как я могу перечислить все шаблоны факториала?

Я пытаюсь сделать функцию, которая будет вычислять все расстояния каждого маршрута. Например: A находится в (0,0), B находится в (1,0), C находится в (0,1). Затем есть 6 маршрутов, чтобы пройти через все города, такие как ABC, или ACB, или BAC, или BCA, или CAB, или CBA. Здесь мой вопрос: как я могу перечислить все шаблоны факториала, такие как ABC, ACB, BAC, BCA, CAB, CBA. Было бы легко, если бы это было 2! или 3!, но если, например, 8!, это было бы очень сложно. Если вы знаете, я хочу знать ваш совет!

itertools.permutations
kaya3 23.12.2020 12:51

Да, спасибо Пани и kaya3! Это на самом деле не думать о пути назад, так что это будет не тот же маршрут. Я ценю вас, ребята :)

西山功一 24.12.2020 09:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

import itertools

string = 'ABC';

result = itertools.permutations(string, 3)

for val in result:
    print(''.join(val))

Спасибо, starboy_jb! Мне это помогло. Я не могу выбрать два ответа только потому, что это спецификация, но я ценю!

西山功一 24.12.2020 09:51
Ответ принят как подходящий

В Python есть встроенная функция itertools.permutations. Вы можете использовать его так

from itertools import permutations

data = ['a', 'b', 'c']
print(list(permutations(data)))

Выход:

[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]

Вы можете сделать так, чтобы данные содержали кортежи, такие как data = [(0, 0), (1, 0), (0, 1)] Тогда вывод будет выглядеть так

[((0, 0), (1, 0), (0, 1)), ((0, 0), (0, 1), (1, 0)), ((1, 0), (0, 0), (0, 1)), ((1, 0), (0, 1), (0, 0)), ((0, 1), (0, 0), (1, 0)), ((0, 1), (1, 0), (0, 0))]

Другие вопросы по теме