Объясните Python код
Число 20 выходит из листа, но я не понимаю как код после return-а работает
[value for value in sampleList if value != val]
почему до for пишется value, и как эта строка работает и что делает? Объясните ребята, пожалуйста. Знаю много других решений на эту задачу, но эту нашел и не могу понять, как он работает.
list1 = [5, 20, 15, 20, 25, 50, 20]
def removeValue(sampleList, val):
return [value for value in sampleList if value != val]
resList = removeValue(list1, 20)
print(resList)
Ответы (1 шт):
Данное выражение является генератором списка. С его помощью можно удобно создавать листы, опуская многострочное заполнение во внешнем цикле.
Генератор [value for value in list] перебирает все элементы списка list и добавляет их в возвращаемый список. А, например, генератор [3 * value for value in list[::2]] возвратит список состоящий из каждого второго элемента изначального списка, умноженного на три. Это просто базовый синтаксис генератора.
В конкретно вашем случае еще добавляется условие внутри цикла: [value for value in list if condition(value)], где condition - либо какая-то логическая функция или операция сравнения. Простейшим примером такого генератора будет что-то такое: [i for i in range(10) if i % 2 == 0] - данный генератор возвращает список, состоящих из четных чисел в промежутке [0; 10), так как он перебирает все числа из данного промежутка и добавляет только те, которые кратны двум.
В вашем случае условие condition это value != val. То есть в возвращаемый список добавятся все элементы исходного списка, кроме тех, которые равны val.