1. ProgrammingPythonКак использовать лямбда-функции в Python

Алан Шович, Джон Шович

Python поддерживает концепцию анонимных функций, также называемых лямбда-функциями. Анонимная часть имени основана на том факте, что функции не нужно иметь имя (но может иметь его, если вы хотите). Лямбда-часть основана на использовании ключевого слова lambda для определения их в Python. Лямбда также является 11-й буквой греческого алфавита.

Но главная причина того, что имя используется в Python, заключается в том, что термин лямбда используется для описания анонимных функций в исчислении. Теперь, когда мы это выяснили, вы можете использовать эту информацию, чтобы зажечь увлекательный разговор на офисных вечеринках.

Минимальный синтаксис для определения лямбда-выражения (без имени) с помощью Python:

Лямбда аргументы: выражение

При его использовании:

  • Замените аргументы данными, передаваемыми в выражение. Замените выражение на выражение (формулу), которое определяет то, что вы хотите, чтобы лямбда возвращала.

Довольно распространенный пример использования этого синтаксиса - это когда вы пытаетесь отсортировать строки текста, где некоторые имена начинаются с заглавных букв, а другие начинаются с строчных букв, как в этих именах:

Адамс, Ма, ДиМеола, Зандуски

Предположим, вы пишете следующий код, чтобы поместить имена в список, отсортировать их, а затем распечатать список, например так:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort ()
печать (имена)

Это вывод из этого:

[«Адамс», «Ма», «Зандуски», «ДиМеола»]

То, что ДиМеола идет за Зандуским, кажется некоторым новичкам неправильным. Но компьютеры не всегда видят вещи так, как мы. (На самом деле, они ничего не «видят», потому что у них нет глаз или мозга… но это не относится к делу.) Причина, по которой diMeola следует за Zandusky, заключается в том, что сортировка основана на ASCII, то есть системе, в которой каждый символ представлен числом.

Все строчные буквы имеют цифры, которые больше, чем прописные. Таким образом, при сортировке все слова, начинающиеся с строчных букв, идут после слов, начинающихся с заглавных букв. Если ничего другого, это, по крайней мере, заслуживает незначительного хм.

Чтобы помочь с этими вопросами, метод Python sort () позволяет вам включить выражение key = в круглые скобки, где вы можете указать, как сортировать. Синтаксис:

.sort (ключ = преобразование)

Часть преобразования - это некоторая вариация сортируемых данных. Если вам повезло, и одна из встроенных функций, таких как len (для длины), будет работать для вас, вы можете просто использовать ее вместо преобразования, например так:

names.sort (ключ = LEN)

К сожалению для нас, длина строки не помогает в алфавитном порядке. Таким образом, когда вы запускаете это, порядок оказывается:

[«Ма», «Адамс», «ДиМеола», «Зандуски»]

Сортировка идет от самой короткой строки (с наименьшим количеством символов) к самой длинной строке. Не полезно в данный момент.

Вы не можете написать ключ = нижний или ключ = верхний, чтобы основывать сортировку на всех строчных или строчных буквах, потому что нижний и верхний не являются встроенными функциями (что можно довольно быстро проверить, прибегая к помощи встроенного в Python 3.7). функции).

Вместо встроенной функции вы можете использовать пользовательскую функцию, которую вы определяете сами, используя def. Например, вы можете создать функцию под названием lower (), которая принимает строку и возвращает эту строку со всеми ее буквами, преобразованными в нижний регистр. Вот функция:

def нижняя (любая строка):
"" "Преобразует строку во все строчные буквы" ""
вернуть anystring.lower ()

Нижнее имя составлено, и любая строка является заполнителем для любой строки, которую вы передадите ей в будущем. Return anystring.lower () возвращает эту строку, преобразованную во все строчные буквы с использованием метода .lower () объекта str (string). (Читайте о строковых методах Python для получения дополнительной информации.)

Вы не можете использовать key = lower в скобках sort (), так как lower () не является встроенной функцией. Это метод ... не то же самое. Вид раздражает со всеми этими модными словечками.

Предположим, вы пишете эту функцию в ячейке Jupyter или в файле .py. Затем вы вызываете функцию с помощью команды print (lowercaseof ('Zandusky')). В результате вы получите строку, преобразованную в строчные буквы, как показано ниже.

пользовательская функция lower () в Python

Итак, теперь у вас есть пользовательская функция для преобразования любой строки во все строчные буквы. Как вы используете это в качестве ключа сортировки? Просто используйте key = transform, как и раньше, но замените transform именем вашей пользовательской функции. Функция называется lowercaseof, поэтому вы должны использовать .sort (key = lowercaseof), как показано ниже:

def нижний регистр (любая строка):
"" "Преобразует строку во все строчные буквы" ""
вернуть anystring.lower ()
 
names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (ключ = lowercaseof)

Запуск этого кода для отображения списка имен приводит их к правильному порядку, потому что сортировка основана на строчных буквах. Вывод такой же, как и раньше, потому что только сортировка, которая происходила за кадром, использовала строчные буквы. Исходные данные по-прежнему имеют прописные и строчные буквы.

«Адамс», «ДиМеола», «Ма», «Зандуски»

Если вы все еще не спите и находитесь в сознании после прочтения всего этого, вы можете подумать: «Хорошо, вы решили проблему сортировки. Но я думал, что мы говорим здесь о лямбда-функциях. Где лямбда-функция? »Пока нет лямбда-функции.

Но это прекрасный пример того, где вы можете использовать лямбда-функцию, потому что функция Python, которую вы вызываете, lowercaseof (), выполняет всю свою работу только с одной строкой кода: return anystring.lower ().

Когда ваша функция может выполнить свою задачу с помощью простого однострочного выражения, например, вы можете пропустить def и имя функции и просто использовать этот синтаксис:

лямбда-параметры: выражение

Замените параметры одним или несколькими именами параметров, которые вы сами составляете (имена в скобках после def и имя функции в обычной функции). Замените выражение на то, что вы хотите, чтобы функция возвращала без слова return. Так что в этом примере ключ, использующий лямбда-выражение, будет:

лямбда anystring: anystring.lower ()

Теперь вы можете понять, почему это анонимная функция. Вся первая строка с именем функции lowercaseof () была удалена. Таким образом, преимущество использования лямбда-выражения заключается в том, что вам вообще не нужна внешняя пользовательская функция. Вам просто нужен параметр, за которым следует двоеточие, и выражение, которое говорит ему, что возвращать.

Изображение ниже показывает полный код и результат его запуска. Вы получаете правильный порядок сортировки без необходимости использования внешней функции клиента, такой как lowercaseof (). Вы просто используете anystring: anystring.lower () (после слова lambda) в качестве ключа сортировки.

Лямбда-выражение Python

Также добавим, что anystring - это более длинное имя параметра, чем использовало бы большинство Pythonistas. Люди Python любят короткие имена, даже однобуквенные имена. Например, вы можете заменить любую строку на s (или любую другую букву), как показано ниже, и код будет работать точно так же:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (key = lambda s: s.lower ())
печать (имена)

Еще в начале этой тирады упоминалось, что лямбда-функция не обязательно должна быть анонимной. Вы можете дать им имена и вызывать их так же, как и другие функции.

Например, вот лямбда-функция с именем currency, которая принимает любое число и возвращает строку в формате валюты (то есть с начальным знаком доллара, запятыми между тысячами и двумя цифрами для копеек):

currency = лямбда-н: f "$ {n:,. 2f}"

Вот один процент с именем, который умножает любое число, которое вы посылаете ему, на 100 и показывает его с двумя знаками процента в конце:

процентов = лямбда n: f "{n: .2%}"

На следующем рисунке показаны примеры обеих функций, определенных в верхней части ячейки Jupyter. Затем несколько операторов print вызывают функции по имени и передают им некоторые образцы данных. Каждый оператор print () отображает число в нужном формате.

Python форматирование чисел

Причина, по которой вы можете определить их как однострочные лямбды, заключается в том, что вы можете выполнять всю работу в одной строке, f "$ {n:,. 2f}" для первой и f "{n: .2%}" для второй. Но то, что вы можете сделать это таким образом, не означает, что вы должны это делать. Вы также можете использовать обычные функции, как показано ниже:

# Показать номер в формате валюты.
def валюта (n):
return f "$ {n:,. 2f}"
 
def процентов (n):
# Показать число в процентном формате.
return f "{n: .2%}"

С этим более длинным синтаксисом вы также можете передавать больше информации. Например, вы можете по умолчанию использовать формат с выравниванием по правому краю в пределах определенной ширины (скажем, 15 символов), чтобы все числа были выровнены по правому краю с одинаковой шириной. Изображение показывает это изменение двух функций.

Функция форматирования Python фиксированной ширины

На изображении выше второй параметр является необязательным и по умолчанию равен 15, если не указан. Так что, если вы называете это так:

печать (валюта (9999))

… Вы получаете заполнение за 9 999,00 $ с достаточным количеством пробелов слева, чтобы его ширина составляла 15 символов. Если вы называете это так вместо этого:

печать (валюта (9999,20)

... вы по-прежнему получаете $ 9 999,00, но с достаточным количеством пробелов слева, чтобы его ширина составляла 20 символов.

.Ljust (), использованный выше, является встроенным строковым методом Python, который дополняет левую часть строки достаточным количеством пробелов, чтобы сделать ее указанной ширины. Существует также метод rjust () для заполнения правой стороны. Вы также можете указать символ, отличный от пробела. Google Python 3 Просто попробуйте, если вам нужно больше информации.

Итак, у вас есть возможность создавать свои собственные функции в Python. В реальной жизни вы хотите, чтобы каждый раз, когда вы обнаруживали, что вам нужен доступ к одному и тому же куску кода - одному и тому же логину - снова и снова в вашем приложении, не просто скопируйте / вставьте этот кусок код снова и снова. Вместо этого поместите весь этот код в функцию, которую вы можете вызвать по имени.

Таким образом, если вы решите изменить строковый код Python, вам не нужно копаться в вашем приложении, чтобы найти все места, которые нужно изменить. Просто измените его в функции, где все определено в одном месте.

  1. ProgrammingPython Как определить и использовать списки Python

Алан Шович, Джон Шович

Самый простой сбор данных в Python - это список. Список - это любой список элементов данных, разделенных запятыми, в квадратных скобках. Как правило, вы присваиваете имя списку Python, используя знак =, как и в случае с переменными. Если список содержит цифры, не используйте кавычки вокруг них. Например, вот список результатов тестов:

баллы = [88, 92, 78, 90, 98, 84]

Если список содержит строки, то, как всегда, эти строки должны быть заключены в одинарные или двойные кавычки, как в этом примере:

Чтобы отобразить содержимое списка на экране, вы можете распечатать его так же, как распечатали бы любую обычную переменную. Например, выполнение print (студентов) в вашем коде после определения этого списка показывает это на экране.

[«Марк», «Янтарь», «Тодд», «Анита», «Сэнди»]

Это может быть не совсем то, что вы имели в виду. Но не волнуйтесь, Python предлагает множество отличных способов получить доступ к данным в списках и отображать их так, как вам нравится.

Ссылки на элементы списка Python по позициям

Каждый элемент в списке имеет номер позиции, начиная с нуля, даже если вы не видите никаких номеров. Вы можете ссылаться на любой элемент в списке по его номеру, используя имя для списка, за которым следует число в квадратных скобках. Другими словами, используйте этот синтаксис:

имя_список [х]

Замените listname на имя списка, к которому вы обращаетесь, и замените x номером позиции нужного вам элемента. Помните, первый элемент всегда номер ноль, а не один. Например, в первой строке ниже я определяю список с именем студентов и затем печатаю ноль из этого списка. В результате выполнения кода отображается имя Mark.
студенты = ["Марк", "Янтарь", "Тодд", "Анита", "Сэнди"]
печать (студентов [0])
отметка

При чтении элементов списка доступа профессионалы используют слово sub перед номером. Например, студенты [0] будут произноситься как студенты ниже нуля.

В следующем примере показан список с именем Score. Функция print () печатает номер позиции последней оценки в списке, которая равна 4 (потому что первая всегда равна нулю).

баллы = [88, 92, 78, 90, 84]
печати (баллы [4])
84

Если вы попытаетесь получить доступ к элементу списка, который не существует, вы получите ошибку «index out of range». Индексная часть является ссылкой на число в квадратных скобках. Например, на рисунке ниже показан небольшой эксперимент в блокноте Jupyter, где был создан список оценок, а затем была предпринята попытка распечатать результаты [5].

Это не удалось и сгенерировал ошибку, потому что нет оценок [5]. Есть только оценки [0], оценки [1], оценки [2], оценки [3] и оценки [4], потому что отсчет всегда начинается с нуля с первой в списке.

Диапазон индекса Python

Цикл по списку Python

Чтобы получить доступ к каждому элементу в списке, просто используйте цикл for с этим синтаксисом:

для х в списке:

Замените x на имя переменной по вашему выбору. Замените список именем списка. Простой способ сделать код читабельным - всегда использовать множественное число для имени списка (например, студенты, оценки). Затем вы можете использовать единственное имя (студент, оценка) для имени переменной. Вам не нужно использовать индексы (числа в квадратных скобках) при этом подходе. Например, следующий код печатает каждый счет в списке результатов:

для оценки в баллах:
печать (оценка)

Не забывайте всегда делать отступ для кода, который должен выполняться внутри цикла. Это изображение показывает более полный пример, где вы можете увидеть результат выполнения кода в блокноте Jupyter.

Цикл по списку Python

Проверка наличия в списке Python элемента

Если вы хотите, чтобы ваш код проверял содержимое списка, чтобы увидеть, содержит ли он какой-либо элемент, используйте в списке name в операторе if или присваивании переменной.

Например, код на изображении ниже создает список имен. Затем две переменные хранят результаты поиска по списку имен Анита и Боб. Печать содержимого каждой переменной показывает True для той, где имя (Anita) находится в списке. Проверка того, находится ли Боб в списке, доказывает, что это Ложь.

Проверка наличия элемента в списке Python

Получение длины списка Python

Чтобы определить, сколько элементов в списке, используйте функцию len () (сокращение от длины). Поместите название списка в круглые скобки. Например, введите следующий код в блокнот Jupyter, приглашение Python или еще что-нибудь:

студенты = ["Марк", "Янтарь", "Тодд", "Анита", "Сэнди"]
печать (LEN (студенты))

Запуск этого кода приводит к следующему выводу:

5

В списке действительно пять элементов, хотя последний всегда на единицу меньше номера, потому что Python начинает считать с нуля. Таким образом, последний, Сэнди, на самом деле относится к студентам [4], а не к студентам [5].

Добавление элемента в конец списка Python

Если вы хотите, чтобы ваш код Python добавил новый элемент в конец списка, используйте метод .append () со значением, которое вы хотите добавить в скобках. Вы можете использовать либо имя переменной, либо буквальное значение внутри кавычек.

Например, на следующем рисунке строка, которая гласит student.append («Goober»), добавляет имя Goober в список. Строка, которая читает student.append (new_student), добавляет любое имя, сохраненное в переменной с именем new_student, в список. Метод .append () всегда добавляет в конец списка. Поэтому, когда вы печатаете список, вы видите эти два новых имени в конце.

Список приложений Python

Вы можете использовать тест, чтобы увидеть, есть ли элемент в списке, а затем добавить его только тогда, когда его еще нет. Например, приведенный ниже код не добавит имя Amber в список, поскольку это имя уже есть в списке:

student_name = "Аманда"

# Добавить имя студента, но только если его еще нет в списке.
если имя_ ученика в студентах:
    печать (имя студента + "уже в списке")
еще:
    students.append (student_name)
    печать (имя студента + «добавлено в список»)

Вставка элемента в список Python

Хотя метод append () позволяет добавить элемент в конец списка, метод insert () позволяет добавить элемент в список в любой позиции. Синтаксис для вставки ()

listname.insert (позиция, позиция)

Замените listname на имя списка, положение на позицию, в которой вы хотите вставить элемент (например, 0, чтобы сделать его первым, 1, чтобы сделать его вторым, и т. Д.). Замените элемент значением или именем переменной, содержащей значение, которое вы хотите поместить в список.

Например, следующий код делает Lupe первым элементом в списке:

# Создать список строк (имен).
студенты = ["Марк", "Янтарь", "Тодд", "Анита", "Сэнди"]

student_name = "Lupe"
# Добавить имя ученика в начало списка.
students.insert (0, student_name)

# Покажите мне новый список.
печать (студенты)

Если вы запустите код, print (студенты) отобразит список после вставки нового имени, как показано ниже:

[«Lupe», «Марк», «Янтарь», «Тодд», «Анита», «Сэнди»]

Изменение элемента в списке Python

Вы можете изменить элемент в списке, используя оператор присваивания = (посмотрите на эти общие операторы Python), так же, как вы делаете это с переменными. Просто убедитесь, что вы указали номер индекса в квадратных скобках элемента, который вы хотите изменить. Синтаксис:

имя_список [индекс] = NewValue

Замените listname на имя списка; замените индекс на индекс (номер индекса) элемента, который вы хотите изменить; и замените newvalue тем, что вы хотите поместить в элемент списка. Например, взгляните на этот код:

# Создать список строк (имен).
студенты = ["Марк", "Янтарь", "Тодд", "Анита", "Сэнди"]
студенты [3] = "Хобарт"
печать (студенты)

Когда вы запускаете этот код, вывод будет следующим: имя Аниты было изменено на Хобарт.

[«Марк», «Янтарь», «Тодд», «Хобарт», «Сэнди»]

Объединение списков Python

Если у вас есть два списка, которые вы хотите объединить в один список, используйте функцию extended () с синтаксисом:

original_list.extend (additional_items_list)

В своем коде замените original_list на имя списка, в который вы будете добавлять новые элементы списка. Замените Additional_items_list на имя списка, который содержит элементы, которые вы хотите добавить в первый список. Вот простой пример использования списков с именами list1 и list2. После выполнения list1.extend (list2) первый список содержит элементы из обоих списков, как вы можете видеть в выводе оператора print () в конце.

# Создать два списка имен.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Хьюи", "Дьюи", "Луи", "Надер", "Бубба"]

# Добавить имена list2 в список list1.
list1.extend (песни2)

# Распечатать список 1.
печать (песни1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Легко Parcheesi, нет?

Удаление элементов списка Python

Python предлагает метод remove (), чтобы вы могли удалить любое значение из списка. Если элемент находится в списке несколько раз, удаляется только первое вхождение. Например, следующий код показывает список букв с буквой C, повторенной несколько раз. Затем код использует letters.remove ("C") для удаления буквы C из списка:

# Удалить "C" из списка.
letters.remove ( "С")

# Покажите мне новый список.
печать (буквы)

Когда вы действительно выполните этот код, а затем напечатаете список, вы увидите, что была удалена только первая буква C:

['A', 'B', 'D', 'C', 'E', 'C']

Если вам нужно удалить весь элемент, вы можете использовать цикл while, чтобы повторить .remove, пока элемент все еще остается в списке. Например, этот код повторяет .remove, пока «C» все еще находится в списке.

# Создать список строк.
буквы = ["A", "B", "C", "D", "C", "E", "C"]

Если вы хотите удалить элемент на основе его позиции в списке, используйте pop () с индексом, а не remove () со значением. Если вы хотите удалить последний элемент из списка, используйте pop () без номера индекса.

Например, следующий код создает список, одна строка удаляет первый элемент (0), а другая удаляет последний элемент (pop (), в скобках которого ничего нет). Печать списка показывает, что эти два элемента были удалены:

# Создать список строк.
буквы = ["A", "B", "C", "D", "E", "F", "G"]
 
# Удалите первый элемент.
letters.pop (0)
# Удалить последний элемент.
letters.pop ()
 
# Покажите мне новый список.
печать (буквы)

Запуск кода показывает, что выталкивание первого и последнего элементов действительно работает:

['B', 'C', 'D', 'E', 'F']

Когда вы вытаскиваете () элемент из списка, вы можете сохранить копию этого значения в некоторой переменной. Например, это изображение показывает тот же код, что и выше. Однако он хранит копии того, что было удалено, в переменных с именами first_removed и last_removed. В конце он печатает список Python, а также показывает, какие буквы были удалены.

удалить элементы из списка Python

Python также предлагает команду del (сокращение от delete), которая удаляет любой элемент из списка на основе его порядкового номера (позиции). Но опять же, вы должны помнить, что первый элемент равен нулю. Итак, допустим, вы запустили следующий код, чтобы удалить элемент № 2 из списка:

# Создать список строк.
буквы = ["A", "B", "C", "D", "E", "F", "G"]
 
# Удалить подпункт 2.
дель письма [2]
 
печать (буквы)

Запуск этого кода снова показывает список следующим образом. Буква C была удалена, что является правильным элементом для удаления, поскольку буквы имеют номера 0, 1, 2, 3 и т. Д.

['A', 'B', 'D', 'E', 'F', 'G']

Вы также можете использовать del, чтобы удалить весь список. Просто не используйте квадратные скобки и номер индекса. Например, код, который вы видите ниже, создает список, а затем удаляет его. Попытка напечатать список после удаления приводит к ошибке, поскольку список больше не существует, когда выполняется оператор print ().

удалить список Python

Очистка списка Python

Если вы хотите удалить содержимое списка, но не сам список, используйте .clear (). Список все еще существует; Тем не менее, он не содержит элементов. Другими словами, это пустой список. Следующий код показывает, как вы можете это проверить. При запуске кода в конце отображается [], что позволяет узнать, что список пуст:

# Создать список строк.
буквы = ["A", "B", "C", "D", "E", "F", "G"]
 
# Очистить список всех записей.
letters.clear ()
 
# Покажите мне новый список.
печать (буквы)

[]

Подсчет, сколько раз элемент появляется в списке Python

Вы можете использовать метод count () Python, чтобы подсчитать, сколько раз элемент появляется в списке. Как и в других методах списка, синтаксис прост:

listname.count (х)

Замените listname на имя вашего списка, а x на значение, которое вы ищете (или имя переменной, содержащей это значение).

Код на изображении ниже подсчитывает, сколько раз буква B появляется в списке, используя литерал B внутри скобок .count (). Этот же код также подсчитывает количество оценок С, но это значение было сохранено в переменной, чтобы показать разницу в синтаксисе. Оба счета работали, как вы можете видеть на выходе программы внизу. Один был добавлен для подсчета F‘s, без использования каких-либо переменных. F были посчитаны прямо в коде, который отображает сообщение. Оценок F нет, поэтому это возвращает ноль, как вы можете видеть в выводе.

количество элементов списка Python

При попытке объединить числа и строки в сообщение, помните, что вам нужно преобразовать числа в строки с помощью функции str (). В противном случае вы получите ошибку, которая читает что-то вроде, может только объединить str (не "int") в str В этом сообщении int - это сокращение от целого числа, а str - от строки.

Поиск индекса элемента списка Python

Python предлагает метод .index (), который возвращает число, указывающее позицию, основанную на индексе, элемента в списке. Синтаксис:

listname.index (х)

Как всегда, замените listname на имя списка, который вы хотите найти. Замените x на то, что вы ищете (как литерал или как имя переменной, как всегда). Конечно, нет никакой гарантии, что элемент находится в списке, и даже если это так, нет гарантии, что элемент присутствует в списке только один раз. Если элемент отсутствует в списке, возникает ошибка. Если элемент присутствует в списке несколько раз, возвращается индекс первого соответствующего элемента.

На следующем рисунке показан пример сбоя программы в строке f_index = grades.index (look_for), поскольку в списке нет F.

Индекс элемента списка Python

Простой способ обойти эту проблему - использовать оператор if, чтобы увидеть, есть ли элемент в списке, прежде чем пытаться получить его порядковый номер. Если элемента нет в списке, отобразите сообщение о том, что это так. В противном случае получите индекс и покажите его в сообщении. Этот код выглядит следующим образом:

# Создать список строк.
оценки = ["C", "B", "A", "D", "C", "B", "C"]
# Решите, что искать
look_for = "F"
# Проверьте, есть ли элемент в списке.
если look_for в оценках:
    # Если это в списке, получить и показать индекс.
    print (str (look_for) + "находится в индексе" + str (grades.index (look_for)))
еще:
    # Если нет в списке, даже не пытайтесь найти номер индекса.
    print (str (look_for) + "нет в списке.")

Алфавитный и сортировка списков Python

Python предлагает метод sort () для сортировки списков. В своей простейшей форме он алфавитирует элементы в списке (если они являются строками). Если список содержит числа, они сортируются от наименьшего к наибольшему. Для такой простой сортировки просто используйте sort () с пустыми скобками:

listname.sort ()

Замените listname на имя вашего списка. На следующем рисунке показан пример использования списка строк и списка чисел. В этом примере для каждого из них был создан новый список, просто назначив каждому отсортированному списку новое имя списка. Затем код печатает содержимое каждого отсортированного списка.

сортировать список Python

Если ваш список содержит строки со смесью прописных и строчных букв, и если результаты сортировки выглядят неправильно, попробуйте заменить .sort () на .sort (key = lambda s: s.lower ()), а затем запустить код снова.

Даты немного сложнее, потому что вы не можете просто ввести их в виде строк, как «31.12.2020». Они должны быть типом данных даты для правильной сортировки. Это означает использование модуля datetime и метода date () для определения каждой даты. Вы можете добавить даты в список, как и любой другой список. Например, в следующей строке код создает список из четырех дат, и код отлично подходит.

даты = [дата дат (2020, 12, 31), дата дат (2019,1,31), дата дат (2018, 28), дата дат (2020, 1,1)]

Компьютер наверняка не против, если вы создадите список таким образом. Но если вы хотите сделать код более читабельным для себя или других разработчиков, возможно, вы захотите создавать и добавлять каждую дату, по одной за раз, так что просто немного проще увидеть, что происходит, и у вас нет иметь дело с таким количеством запятых в одной строке кода. На рисунке ниже показан пример создания пустого списка с именем datelist:

datelist = []
отображать даты в Python

Затем одна дата за раз добавлялась в список с использованием синтаксиса dt.date (год, месяц, день).

После того, как список создан, код использует datelist.sort () для сортировки их в хронологическом порядке (от самого раннего к последнему). Вам не нужно использовать print (datelist) в этом коде, потому что этот метод отображает даты с включенной информацией о типе данных, например так:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Не самый простой список для чтения. Таким образом, вместо того, чтобы печатать весь список одним оператором print (), вы можете циклически проходить каждую дату в списке и печатать каждую из них в формате f-строки% m /% d /% Y. Каждая дата отображается в отдельной строке в формате мм / дд / гггг

Если вы хотите отсортировать элементы в обратном порядке, поместите reverse = True в круглых скобках sort () (и не забудьте сделать первую букву заглавной). На рисунке ниже показаны примеры сортировки всех трех списков в порядке убывания (в обратном порядке) с использованием reverse = True.

сортировать информацию в списке Python в обратном порядке

Сторнирование списка Python

Вы также можете изменить порядок элементов в списке, используя метод .reverse. Это не то же самое, что сортировка в обратном порядке, потому что, когда вы сортируете в обратном порядке, вы все равно на самом деле сортируете: Z – A для строк, от наибольшего к наименьшему для чисел, от последнего к самому раннему для дат. Когда вы переворачиваете список, вы просто переворачиваете элементы в списке, независимо от их порядка, не пытаясь отсортировать их каким-либо образом.

В следующем коде показан пример, в котором вы изменяете порядок имен в списке, а затем распечатываете список. Выходные данные отображают элементы списка в обратном порядке от их первоначального порядка

# Создать список строк.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Перевернуть список
names.reverse ()
# Распечатать список
печать (имена)
 
[«Джейк», «Альберто», «Хонг», «Лупе», «Зара»]

Копирование списка Python

Если вам когда-либо понадобится работать с копией списка, используйте метод .copy (), чтобы не изменять исходный список. Например, следующий код аналогичен предыдущему коду, за исключением того, что вместо изменения порядка исходного списка вы создаете копию списка и переворачиваете ее. Печать содержимого каждого списка показывает, как первый список все еще находится в исходном порядке, тогда как второй перевернут:

# Создать список строк.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Сделайте копию списка
backward_names = names.copy ()
# Перевернуть копию
backward_names.reverse ()
 
# Распечатать список
печать (имена)
печать (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
[«Джейк», «Альберто», «Хонг», «Лупе», «Зара»]

Для будущих ссылок в следующей таблице приведены методы, о которых вы узнали.