Функция enumerate в python
enumerate()
- функция, принимающая на вход коллекцию, и возвращающая итератор, значениями которого будут кортежи пар вида(номер элемента, значение элемента из коллекции)
. Применяется для прохода непосредственно по значениям коллекции, при этом предоставляется информация о номере каждого элемента.
enumerate()
возвращает объект enumerate:
>>> enum_obj = enumerate("ABC")
>>> enum_obj
<enumerate object at 0x7f4e5542f0b0>
Примеры
>>> for pair in enumerate("ABC"):
print(pair)
(0, 'A')
(1, 'B')
(2, 'C')
>>> for index, value in enumerate("ABC"):
print(index, value)
0 A
1 B
2 C
>>> for index, value in enumerate("ABC", 0):
print(index, value)
0 A
1 B
2 C
>>> for index, value in enumerate("ABC", 1):
print(index, value)
1 A
2 B
3 C
>>> for index, value in enumerate(['one', 'two', 'three'], 1):
print(value, index)
one 1
two 2
three 3
>>> for index, letter in enumerate("so~mec~od~e"):
if letter == '~':
print(index, letter)
2 ~
6 ~
9 ~
То есть вместо такого кода:
>>> scores = [54, 43, 23, 12, 67]
>>> for i_player in range(len(scores)):
print(i_player, scores[i_player])
0 54
1 43
2 23
3 12
4 67
нужно юзать такой:
>>> for index, value in enumerate(scores, 1):
print(index, value)
1 54
2 43
3 23
4 12
5 67
Creating dict from enumerate:
# Создайте два списка, в каждом из которых лежит 10 случайных букв алфавита
# (могут повторяться). Затем для каждого списка создайте словарь из пар
# «индекс - значение» и выведите оба словаря на экран.
# Пример:
['й', 'р', 'с', 'г', 'а', 'а', 'т', 'ж', 'е', 'к']
{0: 'й', 1: 'р', 2: 'с', 3: 'г', 4: 'а', 5: 'а', 6: 'т', 7: 'ж', 8: 'е', 9: 'к'}
# Решение:
>>> import random, string
>>> list1 = [random.choice(string.ascii_lowercase) for x in range(10)]
>>> list1
['v', 'z', 'q', 'j', 'n', 'd', 'q', 'i', 'x', 'f']
>>> dict((letter, index) for letter, index in enumerate(list2))
{0: 'm', 1: 'u', 2: 'f', 3: 'w', 4: 'h', 5: 'y', 6: 'a', 7: 'l', 8: 'm', 9: 'e'}
# Соус решения: https://stackoverflow.com/questions/30683950/create-python-dictionary-by-enumerate-function