-
Notifications
You must be signed in to change notification settings - Fork 0
/
enumerate.py
108 lines (98 loc) · 5.84 KB
/
enumerate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
####################################################################################
'''
enumerate - выполняет роль счетчика элементов последовательности в циклах.
Синтаксис:
enumerate(sequence, start=0)
Параметры:
sequence - любая последовательность, итератор, или объект,
поддерживающий метод итератора __next__(),
start - число int, начальное значение счётчика.
Возвращаемое значение:
tuple - кортеж, содержащий пары ('счётчик', 'элемент')
для элементов указанной последовательности.
Описание:
Функция enumerate() вернет кортеж, содержащий отсчет от start и значение,
полученное из итерации по объекту. Переданный в функцию объект
должен быть последовательностью, итератором или другим объектом,
который поддерживает метод итератора __next__().
Функция enumerate() применяется в случаях,
когда необходим счётчик количества элементов в последовательности.
Позволяет избавиться от необходимости инициировать
и обновлять отдельную переменную-счётчик.
'''
####################################################################################
# Функцию enumerate() можно записать так:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
####################################################################################
'''
Наиболее часто функцию enumerate() используют в цикле for/in
в качестве счетчика элементов последовательности:
'''
# Вычисление суммы всех элементов списка при помощи reduce
print('**********Нумерация последовательности********')
seq = list('абвгде')
print(seq) # ['а', 'б', 'в', 'г', 'д', 'е']
for i, val in enumerate(seq, start=1):
print(f'№ {i} => {val}')
####################################################################################
'''
Получение списка парных кортежей (number, value)
(порядковый номер в последовательности, значение последовательности).
'''
# Получение списка парных кортежей (number, value)
print('**********Получение списка парных кортежей (number, value)********')
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons)))
# можно указать с какой цифры начинать считать
print(list(enumerate(seasons, start=1)))
####################################################################################
'''
Использование enumerate() для нахождения индексов минимального
и максимального значений в числовой последовательности:
'''
# нахождения индексов минимального и максимального значений
print('**********нахождения индексов минимального и максимального значений********')
lst = [5, 3, 1, 0, 9, 7]
# пронумеруем список
lst_num = list(enumerate(lst, 0))
# получился список кортежей, в которых
# первый элемент - это индекс значения списка,
# а второй элемент - само значение списка
print(lst_num) # [(0, 5), (1, 3), (2, 1), (3, 0), (4, 9), (5, 7)]
# найдем максимум (из второго значения кортежей)
tup_max = max(lst_num, key=lambda i : i[1])
print(tup_max) # (4, 9)
print(f'Индекс максимума: {tup_max[0]}, Max число {tup_max[1]}')
# 'Индекс максимума: 4, Max число 9'
# найдем минимум (из второго значения кортежей)
tup_min = min(lst_num, key=lambda i : i[1])
print(tup_min) # (3, 0)
print(f'Индекс минимума: {tup_min[0]}, Min число {tup_min[1]}')
# 'Индекс минимума: 3, Min число 0'
####################################################################################
'''
Использование функции enumerate() для того,
что бы напечатать завершающий символ перевода строки.
'''
# напечатать завершающий символ перевода строки
print('**********напечатать завершающий символ перевода строки********')
import sys, time
def teleprint(*args, delay=0.05, str_join=' '):
""" Замедленный вывод текста в консоли """
text = str_join.join(str(x) for x in args)
n = len(text)
for i, char in enumerate(text, 1):
# если количество символов
# равно текущему счетчику.
if i == n:
# печать последнего символа с переводом строки '\n'
char = f'{char}\n'
sys.stdout.write(char)
sys.stdout.flush()
time.sleep(delay)
teleprint('Привет Python! Я рад знакомству с тобой !!!') # Привет Python! ...
####################################################################################