한 리스트에서 중복을 허용하지 않고 모든 경우의 수를 구하는 것
itertools 사용Xdef combinations(arr, n):
result = []
if n == 0:
return [[]]
for i in range(0, len(arr)):
elem = arr[i]
rest_arr = arr[i + 1:]
for c in combinations(rest_arr, n - 1):
result.append([elem, *c])
return result
arr = combinations([1, 2, 3, 4], 2)
print(arr)
# [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
from itertools import combinations
arr = list(combinations([1, 2, 3, 4], 2))
print(arr)
# [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
한 리스트에서 중복을 허용하고 모든 경우의 수를 구하는 것
itertools 사용Xdef permutations(arr, n):
result = []
if n == 0:
return [[]]
for i, e in enumerate(arr):
for p in permutations(arr[:i] + arr[i + 1:], n - 1):
result += [[e] + p]
return result
print(permutations([1, 2, 3, 4], 2))
# [[1, 2], [1, 3], [1, 4], [2, 1], [2, 3], [2, 4], [3, 1], [3, 2], [3, 4], [4, 1], [4, 2], [4, 3]]
from itertools import permutations
arr = list(permutations([1, 2, 3, 4], 2))
print(arr)
# [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]