Rešeno: kako da se permutira u parovima u Pythonu

Posljednje ažuriranje: 09/11/2023

Glavni problem sa permutacijom uparivanja u Pythonu je taj što nije efikasna.

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>

Ako želite to učiniti za sve moguće unose, možete koristiti razumijevanje liste:
>>> 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.

Parne kombinacije liste

U Pythonu možete kombinirati dvije liste pomoću + operatora. Prva lista je "lijevi operand", a druga lista je "desni operand".

Na primjer, da kreirate listu parova koja se sastoji od prvog slova svake riječi u tekstualnoj datoteci, možete koristiti sljedeći kod:

text_file = open(“my_text_file.txt”) words = text_file.read().split(” “) print(“Uparene kombinacije riječi u tekstualnoj datoteci:”) za riječ u riječima: ako riječ nije u [“a”, “an”, “the”, “of”]: print(riječ + “,” + str(parovi[riječ]))

Vektorizacija pirwise kombinacija

U Pythonu možete vektorizirati kombinacije pirwise operatora pomoću funkcije vectorized(). Ova funkcija uzima listu torki i vraća listu vektora. Svaki vektor u vraćenoj listi predstavlja jednu kombinaciju pirwise operatora.

Na primjer, sljedeći isječak koda koristi funkciju vectorized() za kreiranje liste vektora koji predstavljaju sve moguće kombinacije + i – operacija:

vektorizirano = [] za i u rasponu (1, 10): vektorizirano.dodati(vektorizirano[i] + vektorizirano[i – 1])

Slični postovi: