Автор оригинала: Team Python Pool.
Перестановки означают различные порядки расположения элементов. Элементы могут быть строкой, списком или любым другим типом данных. Это перестановка предметов по-разному. Python имеет различные методы внутри пакета под названием itertools, которые могут помочь нам достичь перестановок python.
Например, если у нас есть три шара – КРАСНЫЙ СИНИЙ ЖЕЛТЫЙ
Мы можем сделать разные приготовления к этому балу.
- КРАСНЫЙ СИНИЙ ЖЕЛТЫЙ
- КРАСНЫЙ ЖЕЛТЫЙ СИНИЙ
- ЖЕЛТЫЙ КРАСНЫЙ СИНИЙ
- ЖЕЛТЫЙ СИНИЙ КРАСНЫЙ
- СИНИЙ КРАСНЫЙ ЖЕЛТЫЙ
- СИНИЙ ЖЕЛТЫЙ КРАСНЫЙ
Все это возможные схемы, где порядок является существенным и нет повторения, и это известно как перестановка.
Синтаксис перестановок python
Python имеет пакет под названием ‘itertools’, из которого мы можем использовать функцию перестановок и применять ее к различным типам данных. Число возможных полных перестановок равно факториалу длины (числу элементов). В нашем случае, поскольку у нас есть 3 шара,*2*1.
To import permutations() – из itertools import permutations
Параметры-
- Итерабельность – Здесь мы должны передать итерабельность тех перестановок, которые нам нужны. Пример итераций – список, кортеж, строка и т. Д.
- Размер – В этом параметре мы должны указать количество элементов в каждой перестановке.
Пример простой перестановки Python
from itertools import permutations ([1,2,3],2) for i in a: print(i)
Output- (1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)
Если мы не передаем никаких аргументов во втором параметре, то значение по умолчанию устанавливается как длина итерабли.
Например-
from itertools import permutations ([1,2,3]) for i in a: print(i)
Output- (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)
Вы, должно быть, задаетесь вопросом, почему мы сохраняем результат в переменной и печатаем результат с помощью цикла ‘for’. Давайте посмотрим, что будет, если мы напечатаем переменную.
from itertools import permutations ([1,2,3]) print(a)
Output-
Мы получаем этот объект в качестве вывода. Итак, мы должны использовать цикл for, чтобы перебрать эту переменную и получить результат.
Другой способ получить результат-составить список и затем распечатать его.
from itertools import permutations print(list(permutations([1,2,3])))
Output- [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
Использование функции перестановок Python в строке
Если мы хотим найти различные порядки, в которых может быть упорядочена строка, мы можем использовать функцию перестановок. Давайте посмотрим, как-
Output- ASHU ASUH AHSU AHUS AUSH AUHS SAHU SAUH SHAU SHUA SUAH SUHA HASU HAUS HSAU HSUA HUAS HUSA UASH UAHS USAH USHA UHAS UHSA
Если мы хотим упорядочить эти элементы в группе из двух, мы можем сделать следующее-
Output- AB AC BA BC CA CB
Вы можете заметить, что общее количество результатов равно факториалу размера, который мы даем 2-му параметру.
Найдите порядок в лексикографическом отсортированном порядке
Если мы хотим найти все перестановки строки в a href=”https://en.wikipedia.org/wiki/Lexicographical_order#:~:text=In%20mathematics%2C%20the%20lexicographic%20or,order%20of%20their%20component%20letters.”>lexicographically сортированный порядок означает, что все элементы расположены в алфавитном порядке, и если первый элемент равен, то сортировка их основана на следующих элементах и так далее. href=”https://en.wikipedia.org/wiki/Lexicographical_order#:~:text=In%20mathematics%2C%20the%20lexicographic%20or,order%20of%20their%20component%20letters.”>lexicographically сортированный порядок означает, что все элементы расположены в алфавитном порядке, и если первый элемент равен, то сортировка их основана на следующих элементах и так далее.
from itertools import permutations ("Enter string and size").split() print(*[''.join(i) for i in)
Output Enter the string and size BAC 2 AB AC BA BC CA CB
Использование функции перестановок python в списке
Теперь, если мы хотим найти все возможные порядки, в которых можно расположить список, мы можем использовать тот же подход, что и для строки.
Output- (1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)
Мы также можем найти количество способов, которыми мы можем изменить порядок списка, используя одну строку кода-
print(len(list(permutations([1,2,3,4],4))))
Output- 24
Перестановка Python без встроенной функции для строки
Если мы не хотим использовать встроенную функцию, мы можем сделать какую-то функцию для достижения этой цели.
answer=[] def permutation(string, i, length): if i: answer.append(''.join(string) ) else: for j in range(i, length): string[i],[j], string[i] #keep increasing i by 1 till it becomes equal to 0 permutation(string, i + 1, length) string[i],[j], string[i] permutation(list(string), 0, len(string)) print(str(answer))
Output- ['ABC', 'ACB', 'BAC', 'BCA', 'CBA', 'CAB']
Перестановка Python без встроенной функции для списков
def permutation(list1): # If the length of no permuataions possible if len(list1): return [] # If the length of, return that element if len(list1): return [list1] l = [] for i in range(len(list1)): [i] # Extract list1[i] or m from the list. remlist1 is # remaining list [:i] + list1[i+1:] # Generating all permutations where m is first # element for p in permutation(remlist1): l.append([m] + p) return l if: print(list(permutation([1,2,3,4])))
Output- [[1, 2, 3, 4], [1, 2, 4, 3], [1, 3, 2, 4], [1, 3, 4, 2], [1, 4, 2, 3], [1, 4, 3, 2], [2, 1, 3, 4], [2, 1, 4, 3], [2, 3, 1, 4], [2, 3, 4, 1], [2, 4, 1, 3], [2, 4, 3, 1], [3, 1, 2, 4], [3, 1, 4, 2], [3, 2, 1, 4], [3, 2, 4, 1], [3, 4, 1, 2], [3, 4, 2, 1], [4, 1, 2, 3], [4, 1, 3, 2], [4, 2, 1, 3], [4, 2, 3, 1], [4, 3, 1, 2], [4, 3, 2, 1]]
Должен Читать
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Вывод
Есть некоторые случаи использования или постановки задачи, когда нам нужно найти все возможные порядки, в которых могут быть расположены элементы. Поэтому мы используем перестановки из itertools. Некоторые люди путаются между комбинациями и перестановкой python, в перестановках порядок имеет значение, но в комбинациях порядок не имеет значения.