In [1]:
import itertools

In [2]:
l = ['a', 'b', 'c', 'd']

In [3]:
p = itertools.permutations(l, 2)

In [4]:
print(type(p))


<class 'itertools.permutations'>

In [5]:
for v in itertools.permutations(l, 2):
    print(v)


('a', 'b')
('a', 'c')
('a', 'd')
('b', 'a')
('b', 'c')
('b', 'd')
('c', 'a')
('c', 'b')
('c', 'd')
('d', 'a')
('d', 'b')
('d', 'c')

In [6]:
p_list = list(itertools.permutations(l, 2))

In [7]:
print(p_list)


[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'a'), ('b', 'c'), ('b', 'd'), ('c', 'a'), ('c', 'b'), ('c', 'd'), ('d', 'a'), ('d', 'b'), ('d', 'c')]

In [8]:
print(len(p_list))


12

In [9]:
for v in itertools.permutations(l):
    print(v)


('a', 'b', 'c', 'd')
('a', 'b', 'd', 'c')
('a', 'c', 'b', 'd')
('a', 'c', 'd', 'b')
('a', 'd', 'b', 'c')
('a', 'd', 'c', 'b')
('b', 'a', 'c', 'd')
('b', 'a', 'd', 'c')
('b', 'c', 'a', 'd')
('b', 'c', 'd', 'a')
('b', 'd', 'a', 'c')
('b', 'd', 'c', 'a')
('c', 'a', 'b', 'd')
('c', 'a', 'd', 'b')
('c', 'b', 'a', 'd')
('c', 'b', 'd', 'a')
('c', 'd', 'a', 'b')
('c', 'd', 'b', 'a')
('d', 'a', 'b', 'c')
('d', 'a', 'c', 'b')
('d', 'b', 'a', 'c')
('d', 'b', 'c', 'a')
('d', 'c', 'a', 'b')
('d', 'c', 'b', 'a')

In [10]:
print(len(list(itertools.permutations(l))))


24

In [11]:
l = ['a', 'a']

In [12]:
for v in itertools.permutations(l, 2):
    print(v)


('a', 'a')
('a', 'a')

In [13]:
l = ['a', 'b', 'c', 'd']

In [14]:
c = itertools.combinations(l, 2)

In [15]:
print(type(c))


<class 'itertools.combinations'>

In [16]:
for v in itertools.combinations(l, 2):
    print(v)


('a', 'b')
('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')
('c', 'd')

In [17]:
c_list = list(itertools.combinations(l, 2))

In [18]:
print(c_list)


[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

In [19]:
print(len(c_list))


6

In [20]:
h = itertools.combinations_with_replacement(l, 2)

In [21]:
print(type(h))


<class 'itertools.combinations_with_replacement'>

In [22]:
for v in itertools.combinations_with_replacement(l, 2):
    print(v)


('a', 'a')
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'b')
('b', 'c')
('b', 'd')
('c', 'c')
('c', 'd')
('d', 'd')

In [23]:
h_list = list(itertools.combinations_with_replacement(l, 2))

In [24]:
print(h_list)


[('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'b'), ('b', 'c'), ('b', 'd'), ('c', 'c'), ('c', 'd'), ('d', 'd')]

In [25]:
print(len(h_list))


10

In [26]:
s = 'arc'

In [27]:
for v in itertools.permutations(s):
    print(v)


('a', 'r', 'c')
('a', 'c', 'r')
('r', 'a', 'c')
('r', 'c', 'a')
('c', 'a', 'r')
('c', 'r', 'a')

In [28]:
anagram_list = [''.join(v) for v in itertools.permutations(s)]

In [29]:
print(anagram_list)


['arc', 'acr', 'rac', 'rca', 'car', 'cra']