Понимание списка Python - довольно простая концепция.Вы можете перебирать список и извлекать элементы списка в зависимости от ваших условий.
Рассмотрите следующий пример:
old_list = [1, 2, 3, 4, 5]
new_list = []
for elem in old_list:
new_list.append(elem)
print(new_list) # [1, 2, 3, 4, 5]
Код в основном создает список из другого.Здесь нет ничего особенного.Но это не pythonic
способ сделать это.Давайте сделаем это pythonic
способом:
old_list = [1, 2, 3, 4, 5]
new_list = [elem for elem in old_list]
Это точно так же.Но почему мы просто не скопировали old_list
в new_list
напрямую?Потому что понимание списка можно использовать не только для копирования элементов как есть.Смотрите это:
old_list = [1, 2, 3, 4, 5]
new_list = [elem+1 for elem in old_list]
print(new_list) # [2, 3, 4, 5, 6]
Теперь вы создали другой список!Вы можете выполнить любую операцию над элементами списка, чтобы создать новый.
Поскольку в python также есть троичная операция, это можно сделать также:
a = 3 if x>2 else 4
Это сокращение для этого кода:
if x>2:
a = 3
else:
a = 4
Когда вы объединяете понимание списка и троичные операции, вы можете решить свою проблему всего за 1 строку кода.
a = [1, 2 ,3 ,4 ,5]
def zerofy(arr, n):
return [-1 if 0<=elem<=n else elem for elem in arr]
zerofy(a, 2)
# [-1, -1, 3, 4, 5]