π ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ python: ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ itertools
Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ Π² Python. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import itertools
items = ['a', 'b', 'c', 'd']
combinations = []
for r in range(1, len(items) + 1):
combinations.extend(itertools.combinations(items, r))
print(combinations)
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ itertools
ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (items
). ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΊΠ» for
Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ° items
. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ combinations
. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ΄Π°, ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Π² Python
Π Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ itertools Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
1. Π‘ΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ combinations(). ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
import itertools
numbers = [1, 2, 3]
result = list(itertools.combinations(numbers, 2))
print(result)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» [1, 2, 3]. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ combinations() Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈΠ· Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
[(1, 2), (1, 3), (2, 3)]
2. Π‘ΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ combinations_with_replacement(). ΠΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ combinations(), Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡ .
import itertools
letters = ['A', 'B', 'C']
result = list(itertools.combinations_with_replacement(letters, 2))
print(result)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠΊΠ² ['A', 'B', 'C']. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ combinations_with_replacement() Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ 2, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ:
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
3. ΠΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ permutations(). ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
import itertools
letters = ['A', 'B', 'C']
result = list(itertools.permutations(letters, 2))
print(result)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠΊΠ² ['A', 'B', 'C']. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ permutations() Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ 2, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ· Π΄Π²ΡΡ Π±ΡΠΊΠ²:
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
4. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ combinations() ΠΈΠ»ΠΈ combinations_with_replacement() ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ filter(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄Π»ΠΈΠ½Ρ 3:
import itertools
numbers = [1, 2, 3, 4]
result = list(filter(lambda x: len(x) == 3, itertools.combinations(numbers, 3)))
print(result)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» [1, 2, 3, 4]. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ combinations() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄Π»ΠΈΠ½Ρ 3:
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ΄ΡΠ»Ρ itertools ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡΠΌΠΈ Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ combinations(), combinations_with_replacement() ΠΈ permutations() Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ filter(), ΡΡΠΎΠ±Ρ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.