-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinMax.py
More file actions
66 lines (63 loc) · 2.47 KB
/
MinMax.py
File metadata and controls
66 lines (63 loc) · 2.47 KB
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
# def min(*args, **kwargs):
# key = kwargs.get("key", None)
# return None
#
#
# def max(*args, **kwargs):
# key = kwargs.get("key", None)
# return None
def min(arg1, *args, default=None, key=lambda x: x):
if args:
# Если у нас список аргументов, то не церемонимся
# и начинаем сразу с первого элемента
result = arg1
started = True
iterable = args
else:
# Если у нас iterable первым аргументом, то
# поцеремонимся и начнём в цикле for (это позволяет
# избавиться от обращения по индексу)
result = default
started = False
iterable = arg1
# Проходимся по элементам iterable-объекта
for item in iterable:
if not started:
# Если первого элемента ещё не существует,
# то ставим его
result = item
started = True
continue
# Если предыдущий элемент существует, то сравниваем
if key(item) < key(result):
result = item
return result
def max(arg1, *args, default=None, key=lambda x: x):
if args:
# Если у нас список аргументов, то не церемонимся
# и начинаем сразу с первого элемента
result = arg1
started = True
iterable = args
else:
# Если у нас iterable первым аргументом, то
# поцеремонимся и начнём в цикле for (это позволяет
# избавиться от обращения по индексу)
result = default
started = False
iterable = arg1
# Проходимся по элементам iterable-объекта
for item in iterable:
if not started:
# Если первого элемента ещё не существует,
# то ставим его
result = item
started = True
continue
# Если предыдущий элемент существует, то сравниваем
if key(item) > key(result):
result = item
return result
print(min(2,3,4,1))
print(max(2,3,4,5,6,9))
# help(min)