Все возможные перестановки python

Перестановка и комбинация в Python – примеры

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

Перестановка и комбинация в Python – важная часть математики. Python предоставляет библиотеку itertools, которая имеет встроенные функции для вычисления перестановок и комбинаций.

Импорт необходимой библиотеки

Чтобы вычислить перестановку и комбинацию, нам нужно импортировать библиотеку itertools. Мы можем сделать это, используя следующую команду.

Вышеупомянутый оператор импортирует библиотеку itertools и определит путь к ее функции.

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

Что такое перестановка Python?

Перестановка в Python – это расположение множества, в котором порядок имеет значение. Модуль Python itertools предоставляет встроенный метод permutation() для поиска перестановки. Давайте разберемся в следующем примере.

from itertools import permutations seq = permutations(['1','2','3']) print(seq) for p in list(seq): print(p)
('1', '2', '3') ('1', '3', '2') ('2', '1', '3') ('2', '3', '1') ('3', '1', '2') ('3', '2', '1')

В приведенном выше коде мы импортировали модуль itertools. Мы вызвали метод permutation(), который принимает строку в качестве аргумента и предоставляет объект itertools. Для получения каждой перестановки необходимо использовать цикл for.

Читайте также:  background-position

Возьмем два набора перестановок.

from itertools import permutations seq = permutations(['A','B']) for p in list(seq): print(p)
from itertools import permutations list1 = [1, 2, 3, 4] seq = permutations(list1) print(seq) for p in list(seq): print(p)
(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)

В приведенном выше коде мы получили комбинацию нескольких целых чисел.

Перестановка фиксированной длины

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

from itertools import permutations seq = permutations(['H', 'e', 'l', 'l', 'o'], 3) for p in list(seq): print(p)
('H', 'e') ('H', 'l') ('H', 'l') ('H', 'o') ('e', 'H') ('e', 'l') ('e', 'l') ('e', 'o') ('l', 'H') ('l', 'e') ('l', 'l') ('l', 'o') ('l', 'H') ('l', 'e') ('l', 'l') ('l', 'o') ('o', 'H') ('o', 'e') ('o', 'l') ('o', 'l')

В приведенном выше коде мы вычислили фиксированную перестановку.

Что такое комбинация строки?

Комбинация в Python – это набор элементов, порядок которых не имеет значения. Модуль Python itertools предоставляет метод combination() для вычисления комбинации заданных данных. Мы можем вычислить комбинацию строки. Давайте разберемся в следующем примере.

import itertools seq = "ABC" com_seq = itertools.combinations(seq, 2) for c in com_seq: print(c)

Комбинация с заменой

Модуль itertools состоит из другого метода, называемого combination_with_replacement(), который также учитывает комбинацию самого числа. Давайте разберемся с его примером.

from itertools import combinations_with_replacement com = combinations_with_replacement(['J', 'a', 'v', 'a', 't', 'p', 'o', 'i', 'n', 't'], 2) #Print the list of combinations for c in list(com): print(c)
('J', 'J') ('J', 'a') ('J', 'v') ('J', 'a') ('J', 't') ('J', 'p') ('J', 'o') ('J', 'i') ('J', 'n') ('J', 't') ('a', 'a') ('a', 'v') ('a', 'a') ('a', 't') ('a', 'p') ('a', 'o') ('a', 'i') ('a', 'n') ('a', 't') ('v', 'v') ('v', 'a') ('v', 't') ('v', 'p') ('v', 'o') ('v', 'i') ('v', 'n') ('v', 't') ('a', 'a') ('a', 't') ('a', 'p') ('a', 'o') ('a', 'i') ('a', 'n') ('a', 't') ('t', 't') ('t', 'p') ('t', 'o') ('t', 'i') ('t', 'n') ('t', 't') ('p', 'p') ('p', 'o') ('p', 'i') ('p', 'n') ('p', 't') ('o', 'o') ('o', 'i') ('o', 'n') ('o', 't') ('i', 'i') ('i', 'n') ('i', 't') ('n', 'n') ('n', 't') ('t', 't')

Комбинация числового набора

Если данный ввод находится в отсортированном порядке, комбинированные кортежи будут возвращены в отсортированном порядке. Давайте разберем на примере.

import itertools v = [1, 2, 3, 4] com_seq = itertools.combinations_with_replacement(v, 3) for i in com_seq: print(i)
(1, 1, 1) (1, 1, 2) (1, 1, 3) (1, 1, 4) (1, 2, 2) (1, 2, 3) (1, 2, 4) (1, 3, 3) (1, 3, 4) (1, 4, 4) (2, 2, 2) (2, 2, 3) (2, 2, 4) (2, 3, 3) (2, 3, 4) (2, 4, 4) (3, 3, 3) (3, 3, 4) (3, 4, 4) (4, 4, 4)

В этом руководстве мы обсудили модуль itertools для поиска перестановки и комбинации заданных данных с помощью скрипта Python.

Источник

Перестановки и комбинации в Python

Перестановки и комбинации набора элементов в Python – это различные расположения элементов набора:

  • Комбинация – это набор элементов, порядок которых не имеет значения.
  • Перестановка – это расположение набора, в котором порядок имеет значение.

Перестановки вышеуказанного набора следующие:

('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A')

Комбинации вышеуказанного набора, когда два элемента взяты вместе, следующие:

В этом руководстве мы узнаем, как получить перестановки и комбинации группы элементов в Python. Мы рассмотрим наборы символов и цифр.

Мы будем использовать методы combinations() и permutations() в модуле itertools.

Перестановки числовых данных

Чтобы использовать метод permutations() в модуле itertools, нам сначала нужно импортировать модуль.

Теперь давайте определим набор чисел.

Теперь, чтобы получить список перестановок, воспользуемся методом permutations().

perm_set = itertools.permutations(val)

Строка кода выше дает объект itertools. Чтобы напечатать различные перестановки, мы будем перебирать этот объект.

Мы получаем результат как:

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

Полный код этого раздела приведен ниже:

import itertools val = [1, 2, 3, 4] perm_set = itertools.permutations(val) for i in perm_set: print(i)

Перестановки строки

Далее мы узнаем, как получить перестановки символов в строке.

Мы будем использовать метод permutations(), но на этот раз мы передадим строку в качестве аргумента.

import itertools s = "ABC" perm_set = itertools.permutations(s) for val in perm_set: print(val)
('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A')

Перестановки фиксированной длины

Мы можем найти перестановки набора, в котором мы берем только указанное количество элементов в каждой перестановке. Это похоже на nPr в области математики.

Код для поиска перестановок фиксированной длины приведен ниже:

import itertools val = [1, 2, 3, 4] perm_set = itertools.permutations(val,2) for i in perm_set: print(i)
(1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)

Комбинации числовых данных

Так же, как метод permutations(), мы можем использовать combinations() также в itertools для получения комбинаций набора.

При вызове combinations() нам нужно передать два аргумента: набор для поиска комбинаций и число, обозначающее длину каждой комбинации.

import itertools val = [1, 2, 3, 4] com_set = itertools.combinations(val, 2) for i in com_set: print(i)

Комбинации строки

Мы также можем получить комбинации строки. Используйте следующий фрагмент кода:

import itertools s = "ABC" com_set = itertools.combinations(s, 2) for i in com_set: print(i)

Комбинации с заменами

В модуле itertools есть еще один метод, который называется комбинациями_with_replacement(). Этот метод также учитывает комбинацию числа с самим собой.

Посмотрим, как это работает.

Для числового набора

import itertools val = [1, 2, 3, 4] com_set = itertools.combinations_with_replacement(val, 2) for i in com_set: print(i)
(1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4)

Вы можете видеть разницу в выводе выше и выводе для работы нормальной комбинации. Здесь у нас есть такие комбинации, как (1,1) и (2,2), которых нет в обычных комбинациях.

Для строки

import itertools val = "ABCD" com_set = itertools.combinations_with_replacement(val, 2) for i in com_set: print(i)
('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'C') ('C', 'D') ('D', 'D')

Источник

Как получить все возможные комбинации элементов в Python?

Комбинации элементов в Python

Комбинации элементов в Python

Наиболее эффективный способ получить все возможные комбинации элементов в Python — это использовать модуль itertools и входящую в него функциию permutations() .

Почему стоит использовать модуль itertools?

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

Синтаксис функции permutations()

import itertools itertools.permutations(lst, length = None)

Параметрами функции являются:

  • lst — это итерируемая последовательность (например: список, кортеж, строка)
  • lengh — это длина возвращаемых кортежей (необязательный параметр). Если length = None , то для перестановок будут использоваться все элементы итератора.

Ниже мы рассмотрим варианты получения всех возможных перестановок для списка и строки:

Код для получения всех комбинаций элементов в Python (длина комбинаций = числу элементов)

1. Получим все перестановки элементов списка lst = [1, 2, 3]:

import itertools nums = [1, 2, 3] permutations = list(itertools.permutations(nums)) print(permutations)

Вывод на экран:

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

В рассматриваемой задаче мы получаем комбинации, содержащие все элементы списка, поэтому можно не указывать значение второго аргумента для функции permutations().

2. Получим все возможные сочетания букв в слове «кот»:

import itertools word = "кот" # получим списки из перестановок букв letters = list(itertools.permutations(word)) # объединим списки с буквами в слова permutations = [ ''.join(i) for i in letters ] print(permutations)

Вывод на экран:

Пояснения к коду:

С помощью кода list(itertools.permutations(word)) мы получаем список с кортежами из букв «к», «о» и «т», расположенных в разном порядке:

letters = [('к', 'о', 'т'), ('к', 'т', 'о'), ('о', 'к', 'т'), ('о', 'т', 'к'), ('т', 'к', 'о'), ('т', 'о', 'к')].

Так как мы получаем комбинации, содержащие все три буквы слова «кот», значение второго аргумента для функции permutations() можно не указывать. Теперь чтобы объединить кортежи из букв в слова, для каждого кортежа i из списка letters вызовем метод ».join(i) , объединяющий кортеж в строку. Вместо генератора списков permutations = [ ».join(i) for i in letters ] можно организовать перебор элементов списка letters с помощью цикла for. Это также рабочий способ, хоть и более динный:

import itertools word = "кот" # получим списки из перестановок букв letters = list(itertools.permutations(word)) permutations = [] for i in letters: permutations.append(''.join(i)) print(permutations)

Вывод на экран:

Код для получения комбинаций из n элементов: (длина комбинаций lst , то в качестве второго аргумента функции permutation() мы передаем значение 2.

2. Получим сочетания из двух букв слова «кот»:

import itertools word = "кот" letters = list(itertools.permutations(word, 2)) res = [''.join(i) for i in letters] print(res)

Вывод на экран:

Пояснения к коду:

Так как мы получаем комбинации двух букв слова «кот», то в качестве второго аргумента функции permutations() передаем значение 2.

В результате выполнения кода: list(itertools.permutations(word, 2)) мы получим список letters, состоящий из кортежей: [(‘к’, ‘о’), (‘к’, ‘т’), (‘о’, ‘к’), (‘о’, ‘т’), (‘т’, ‘к’), (‘т’, ‘о’)] . После этого мы объединяем элементы кортежей в строки с помощью метода ».join(i) . Метод join() будем вызывать для каждого кортежа, входящего в letters. Объединение букв — элементов кортежей можно также организовать в цикле for. Тогда код будет выглядеть немного иначе:

import itertools word = "кот" letters = itertools.permutations(word, 2) res = [] for i in letters: res.append(''.join(i)) print(res)

Вывод на экран:

У нас появился Telegram-канал для изучающих Python! Присоединяйтесь: вместе «питонить» веселее! 😉 Ссылка на канал: «Кодим на Python!»

Источник

Оцените статью