Список в Python
В 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]