В Python есть специальное выражение, называемое деривацией . Его функция — принять структуру данных в качестве входных данных, затем отфильтровать и вычислить ее и, наконец, вывести другую структуру данных. В соответствии с различными структурами данных его можно разделить на понимание списка, понимание множеств и понимание словаря. Давайте сначала сосредоточимся на наиболее часто используемых генераторах списков.
Давайте сначала посмотрим на синтаксический формат понимания списков:
listname=[выражение для переменной в объекте (если условие)]
listname: имя вновь созданного списка.
выражение: выражение.
переменная: имя переменной.
(если условие): используется для выбора списка, соответствующего требованиям объекта.
Мы исходим из трех аспектов: списка значений в заданном диапазоне, списка указанных условий и списка, состоящего из элементов, соответствующих условиям.
Давайте сначала подумаем, когда нам нужно сгенерировать 10 чисел и сохранить их в списке. Давайте сначала рассмотрим общий способ:
listname=[]foriinrange(10):listname.append(i)print(listname)
Результат:
[0,1,2,3,4,5,6,7,8,9]
Для использования понимания списка требуется только одна строка:
listname=[iforiinrange(10)]
Результат:
[0,1,2,3,4,5,6,7,8,9]
Этот подход упрощает наши операции при определении списков.
Предположим, мы знаем, что список имеет вид listname = [1,3,5,6,7,9,10,23,26,28,64,98]. Мы хотим найти его и прибавить все числа в нем на 5. Обычный метод:
listname=[1,3,5,6,7,9,10,23,26,28,64,98]foriinrange(len(имя списка)):listname[i]+=5print(имя списка)
Результат:
[6,8,10,11,12,14,15,28,31,33,69,103]
Использование списков также очень кратко:
listname=[1,3,5,6,7,9,10,23,26,28,64,98]listname=[i+5foriinlistname]
Выход:
[6,8,10,11,12,14,15,28,31,33,69,103]
Этот тип понимания списка более сложен, чем первые два, но он может упростить код.
Давайте рассмотрим пример, чтобы посмотреть на формат кода:
Известно, что список имеет вид listname = [8,33,53,64,73,95,101,123,126,164,198], тогда нам нужно найти в списке числа меньше и больше 100, затем умножить их на 0,8 и, наконец, верните их в список.
Если мы используем обычный метод:
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[]#Создать новый список для хранения foriinrange(len(listname)):#Передача значения индекса Calendar iflistname[i]>100:#Найти число больше 100 listname[i]*=0.8#Умножить на 0,8 newlist.append(listname[i])#Добавить в новый список print(newlist)
Результат:
[96.0,104.0,112.0,128.0,144.0,160.0]
Используйте понимание списков:
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[i*0.8foriinlistnameifi>100]print(newlist)
Результат вывода:
[96.0,104.0,112.0,128.0,144.0,160.0]
Давайте проанализируем его, исходя из грамматической структуры этого примера:
Мы можем использовать этот метод при использовании сложных списков. Можно понять, что мы сначала выбираем элементы, соответствующие условиям (условным операторам), из объекта, затем обрабатываем выходное выражение и, наконец, сохраняем их в списке, образуя. новый список.
Вот несколько примеров вопросов, которые вы можете попробовать.
1. Список [1,2,13,22,25]. Используйте понимание списка, чтобы извлечь числа больше 10, возвести каждое число в квадрат и, наконец, вывести.
Результат работы:
[169 484 625]
Код следующий: вы можете сначала попытаться выполнить справочный ответ.
list=[1,2,13,22,25]newlist=[i*iforiinlistifi>10]print(newlist)
2. Используйте понимание списка, чтобы найти все нечетные числа в списке и создать новый список, список = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Код выглядит следующим образом:
list=[1,2,3,4,5,6,7,8,9,10]newlist=[iforiinlistifi%2==1]print(newlist)
Результат:
[1,3,5,7,9]