Рубрики
Без рубрики

Понимание функции перестановок Python с примерами

Мы можем использовать функцию перестановок python для строк, списков и различных типов itertools. Мы можем найти лексикографически упорядоченные аранжировки.

Автор оригинала: Team Python Pool.

Перестановки означают различные порядки расположения элементов. Элементы могут быть строкой, списком или любым другим типом данных. Это перестановка предметов по-разному. Python имеет различные методы внутри пакета под названием itertools, которые могут помочь нам достичь перестановок python.

Например, если у нас есть три шара – КРАСНЫЙ СИНИЙ ЖЕЛТЫЙ

Мы можем сделать разные приготовления к этому балу.

  • КРАСНЫЙ СИНИЙ ЖЕЛТЫЙ
  • КРАСНЫЙ ЖЕЛТЫЙ СИНИЙ
  • ЖЕЛТЫЙ КРАСНЫЙ СИНИЙ
  • ЖЕЛТЫЙ СИНИЙ КРАСНЫЙ
  • СИНИЙ КРАСНЫЙ ЖЕЛТЫЙ
  • СИНИЙ ЖЕЛТЫЙ КРАСНЫЙ

Все это возможные схемы, где порядок является существенным и нет повторения, и это известно как перестановка.

Синтаксис перестановок python

Python имеет пакет под названием ‘itertools’, из которого мы можем использовать функцию перестановок и применять ее к различным типам данных. Число возможных полных перестановок равно факториалу длины (числу элементов). В нашем случае, поскольку у нас есть 3 шара,*2*1.

To import permutations() – из itertools import permutations

Параметры-

  1. Итерабельность – Здесь мы должны передать итерабельность тех перестановок, которые нам нужны. Пример итераций – список, кортеж, строка и т. Д.
  2. Размер – В этом параметре мы должны указать количество элементов в каждой перестановке.

Пример простой перестановки 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)
перестановки python
перестановки python

Если мы не передаем никаких аргументов во втором параметре, то значение по умолчанию устанавливается как длина итерабли.

Например-

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, в перестановках порядок имеет значение, но в комбинациях порядок не имеет значения.