Решено: как да пермутирате по двойки в python

Последна актуализация: 09/11/2023

Основният проблем с пермутацията по двойки в Python е, че не е ефективна.

I have a list of integers, and I want to pairwise permute them in all possible ways. For example, if the input is [1,2,3], the output should be [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]].
How can I do this in Python?


A:

You can use <code>itertools.permutations</code>:
<code>&gt;&gt;&gt; from itertools import permutations
&gt;&gt;&gt; list(permutations([1, 2], 2))  # for your example input [1, 2]
[(1, 2), (2, 1)]  # output is a generator object which you can convert to a list as shown above. 
</code>

Ако искате да го направите за всички възможни входове, можете да използвате разбиране на списък:
>>> from itertools import permutations
>>> [list(permutations([1, 2, 3], 2))] # for your example input [1, 2]
[[(1, 2), (2, 1)], [(1, 3), (3, 1)], [(2, 3), (3, 2)]] # output is a list of generator objects which you can convert to lists as shown above.

Комбинации по двойки от списък

В Python можете да комбинирате два списъка с помощта на оператора +. Първият списък е „левият операнд“, а вторият списък е „десният операнд“.

Например, за да създадете списък от двойки, състоящ се от първата буква на всяка дума в текстов файл, можете да използвате следния код:

text_file = open(“my_text_file.txt”) words = text_file.read().split(” “) print(“Двойни комбинации от думи в текстов файл:”) за дума в думи: ако думата не е в [“a”, “an”, “the”, “of”]: print(word + “, ” + str(pairs[word]))

Векторизиране на pirwise комбинации

В Python можете да векторизирате комбинации от pirwise оператори, като използвате функцията vectorized(). Тази функция взема списък от кортежи и връща списък от вектори. Всеки вектор в върнатия списък представлява единична комбинация от операторите pirwise.

Например, следният кодов фрагмент използва функцията vectorized(), за да създаде списък от вектори, представящи всички възможни комбинации от + и – операции:

векторизирано = [] за i в диапазон (1, 10): векторизирано.append(векторизирано[i] + векторизирано[i – 1])

Подобни публикации:

Оставете коментар