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

Ответить