Автор оригинала: Santosh Kumar Sahu.
В Python Понимание списка – это метод создания нового списка с использованием других итераций и в меньшем количестве строк кода. Итерируемым объектом, который может быть использован в этом методе, может быть любая структура данных, такая как список, кортеж, набор, строка, словарь и т. Д. Здесь также можно использовать итерацию, созданную с помощью функции range ().
Синтаксис, используемый в понимании списка, обычно содержит три сегмента:
итерируемый: итерируемый объект, такой как список, кортеж, набор, строка, словарь и т. Д. функция преобразования: функция преобразования, которая должна быть применена к итерируемому объекту. фильтры: фильтры/условия, которые должны применяться к итеративным.
Синтаксис
#list comprehension syntax list = [tranform_func(i) for i in iterable if filters] #which is equivalent to... for i in iterator: if filters: list.append(tranform_func(i))
Пример: Понимание списка с использованием различных итераций В приведенном ниже примере описывается, как применять различные функции преобразования к данной итерации.
#creating list of squares of natural numbers MyRange = range(1,6) NewList = [i*i for i in MyRange] print(NewList) #creating list of odd numbers MyTuple = (1, 2, 3, 4, 5, 6, 7, 8) NewList = [i for i in MyTuple if i%2!=0] print(NewList) #creating list of characters (in uppercase) of a string MyString = 'Hello' NewList = [i.upper() for i in MyString] print(NewList)
Выход
[1, 4, 9, 16, 25] [1, 3, 5, 7] ['H', 'E', 'L', 'L', 'O']
Функция понимания и преобразования списка
В приведенных выше примерах функция преобразования определяется внутри синтаксиса понимания списка. В качестве альтернативы, он может быть определен вне его, что дает пользователю возможность создать более инновационную функцию. Пример: Создание оценок с использованием понимания списка В приведенном ниже примере создается функция grade (), которая используется в синтаксисе понимания списка для категоризации элемента итератора.
def grade(x): if x < 0: return 'Invalid' elif x >= 0 and x < 30: return 'Fail' elif x >= 30 and x < 50: return 'Grade C' elif x >= 50 and x < 75: return 'Grade B' elif x >= 75 and x <= 100: return 'Grade A' else: return 'Invalid' MyList = [20, 45, 67, 90, -1, 89, 102] NewList = [grade(i) for i in MyList] print(NewList)
Выход
['Fail', 'Grade C', 'Grade B', 'Grade A', 'Invalid', 'Grade A', 'Invalid']
Пример: Поиск простых чисел с помощью понимания списка Создается функция с именем prime , которая в дальнейшем применяется к итератору с использованием метода понимания списка для поиска простых элементов итератора. Пожалуйста, смотрите Пример ниже для получения более подробной информации.
def prime(x): i = 2 if x >= 2: count = 0 else: count = None while i <= x-1: if x%i==0: count = 1 break; i = i + 1 if count == 0: return x MyRange = range(1,20) NewList = [prime(i) for i in MyRange if prime(i) is not None] print(NewList)
Выход
[2, 3, 5, 7, 11, 13, 17, 19]
Рекомендации
Википедия: Понимание списка Python.org: Понимание списка DataCamp: Понимание списка Навыки альфа-кодирования: Понимание списка YouTube: Понимание списка
.