Основы языка программирования python за 10 минут
Содержание:
- Краткое введение в ООП
- Есть ли здесь какие-то подводные камни?
- Код Python для 2D-списка
- Методы списков в Python
- Доступ к элементам в 2D-списке в Python
- Индексация списков
- Выполните Итерацию списка в Python С Помощью Itertools.Цикл
- Приложения
- Как в Python используется оператор +
- Использование методов extend() и append() со строками
- 6. Как разбить список Python на равные части?
- Повторите список в Python С Помощью Модуля Numpy
- Куда пойти отсюда?
- Преобразовать список переменных клавиш, стоимость записей в Dict
- Операции со списками в Python
- Встроенные функции
- Список
- Список Python POP () Несколько элементов
- Список Python POP () по значению
- 2. Как лучше выбирать элементы из списка?
Краткое введение в ООП
Объектно-ориентированное программирование (ООП) – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей.
Объединение данных и действий, производимых над этими данными, в единое целое, которое называется объектом – является одним из основных принципов ООП.
Основными понятиями являются понятие класса и объекта.
Класс является типом данных, определяемым пользователем и представляет собой структуру в виде данных и методов для работы с данными.
Формально Класс — это шаблон, по которому будет сделан объект.
Объект является экземпляром класса. Объект и экземпляр - это одно и то же.
Вот пример. Форма для изготовления печенья – это класс, а само печенье это объект или экземпляр класса, т.е. это конкретное изделие. Печенье имеет размеры, цвет, состав – это атрибуты класса. Также в классе описываются методы, которые предназначены для чтения или изменения данных объекта.
В Python характеристики объекта, называются атрибутами, а действия, которые мы можем проделывать с объектами, — методами. Методами в Python называют функции, которые определяются внутри класса.
Объект = атрибуты + методы
Есть ли здесь какие-то подводные камни?
Допустим, мы хотим добавить к первому списку не целый список (или любой другой итерируемый объект), а какой-то один элемент. Давайте используем метод и добавим к списку булево значение True.
list_1 = list_1.append(True) print(list_1) # Output
А что будет, если мы попытаемся использовать с той же целью метод ?
list_1 = list_1.extend(True) print(list_1) # Output --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-16-9e4e0d6da67b> in <module>() 1 list_1 = ----> 2 list_1.extend(True) 3 print(list_1) TypeError: 'bool' object is not iterable
Это приводит к ошибке. Давайте разберем полученное сообщение. . Это значит, что у нас был аргумент неподходящего типа.
Метод принимает в качестве аргумента только итерируемые объекты. «Под капотом» перебирает в цикле итерируемый объект и добавляет каждый его элемент к первому списку.
Итерируемый объект — это любой объект, который вы можете перебрать в цикле и получить доступ к каждому отдельному элементу этого объекта. Для использования с годятся списки, множества, кортежи и строки.
Общий синтаксис использования метода — .
Код Python для 2D-списка
Код, который производит сетку на рисунке ниже.
grid = [] for row in range(5): new_row = [] for col in range(5): new_row.append((row, col)) grid.append(new_row) for row in grid: print(row)
Изучите этот код хорошо, и убедитесь, что вы полностью понимаете его. Это использует вложен для петлей , что вам также нужно будет знать.
В целом темы Python программирование и компьютерные науки очень часто опираются друг на друга. Пытаясь понять тему, когда ваше понимание необходимых поддерживающих тем слабых, обычно является плохой идеей.
Так обратите внимание, для понимания о 2D списки в Python Вам нужно быть комфортно с
- Простые 1-мерные списки
- Доступ к элементам 1D-списка с использованием индекса. Например.
- Вложенные петли
- Этот пример использует хранить «координаты», но это не всегда требование
Методы списков в Python
Помимо уже названных встроенных функций Python имеет еще и несколько специальных методов для работы со списками. С помощью этих методов можно осуществлять разные полезные операции.
Давайте подумаем о списках покупок. Какие операции мы с ними проделываем чаще всего?
- Добавляем элементы (по одному или несколько сразу)
- Удаляем элементы
- Меняем порядок элементов.
Как добавлять элементы в список
Мы можем добавлять элементы, вставляя их по одному в конец списка. Это делается при помощи метода . Давайте добавим в наш .
shopping_list.append('grapes') print(shopping_list) >>
Что, если бы мы захотели добавить в список элементы из другого списка (или другого итерируемого объекта)? Вместо того чтобы добавлять их по одному, мы можем воспользоваться методом и добавить все элементы одного объекта в другой.
shopping_list.extend() print(shopping_list) >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint', 'grapes', 'protein bars', 'cheese'
Примечание. Есть существенная разница между методами и и оператором конкатенации .
Оператор создает новый список, комбинируя списки, указанные в качестве операндов. А методы и изменяют список, для которого они вызваны, и не возвращают новых списков.
Как удалять элементы из списка
Мы можем удалять элементы из списка по одному или даже группами.
Метод возвращает последний элемент списка и удаляет его, как показано ниже. Последним элементом в списке был , а после применения метода его не стало.
last_element = shopping_list.pop() print(shopping_list) print(last_element) # Вывод >> >> cheese
Если бы мы хотели удалить элемент под определенным индексом, этот индекс можно было бы передать в метод в качестве аргумента.
not_needed = shopping_list.pop(2) print(not_needed) # Вывод >> candy
Если нам не нужен доступ к значению удаляемого элемента, можно воспользоваться функцией .
При этом можно указать как индекс элемента, который нужно удалить, так и срез — чтобы удалить все элементы в указанном диапазоне.
del shopping_list print(shopping_list) # Вывод >>
Предположим, мы знаем, какой именно товар в списке покупок мы передумали покупать, но не знаем, какой у него индекс. В подобных случаях можно воспользоваться методом и удалить элемент по значению.
В нашем примере элемент под индексом 1 — это . Если бы мы не знали индекс , мы могли бы просто написать и получить такой же результат, как в примере кода выше.
Для удаления всех элементов из списка можно использовать .
Примечание. При попытке удалить элемент, которого нет в списке, мы получим ValueError.
Доступ к элементам в 2D-списке в Python
Чтобы получить доступ к элементу из сетки в коде выше, вам нужен двойной индекс, который выглядит так:
Печать (сетка )
Обратите внимание, что приведет к Несмотря на то, что может показаться смысл. Вот еще один пример, который поможет вам ознакомиться с двумя списками в Python:
Вот еще один пример, который поможет вам ознакомиться с двумя списками в Python:
matrix = [] for row in range(1, 5): new_row = [] for col in range(1,5): new_row.append(row * col) matrix.append(new_row) for row in matrix: for el in row: print(el, end ="\t") # \t means "tab" print()
Как вы думаете, что вывод будет для этого кода?
1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16
Единственный способ добраться до 2D списки в Python это делая много практики. Посмотрите, можете ли вы думать о примере, где они нуждаются в них, а затем идите вперед и напишите какой-нибудь код. Многие игры имеют 2D PORD, например, или таблицы данных. Чем больше времени вы тратите программирование в Python, тем чаще вы столкнетесь с ситуациями, когда ваше знание 2D-списка придет очень удобно.
Стоит отметить, что интерпретация 2D-списка в форме строки/столбца предназначена только для удобства человека. Внутренне данные не хранятся так. Так, например, вы можете получить доступ к через где это к и это к не думая с точки зрения стола. Однако, если вы собираетесь концептуализировать 2D-список в таблице, существует широко используемая конвенция Первый индекс, представляющий ряд и Второй индекс, представляющий Колонка Отказ Я настоятельно советую студентам придерживаться этой конвенции, хотя вначале она может показаться незнакомой. Это будет способствовать рассуждениями о ваших данных проще позже в ваших исследованиях.
Счастливые вычисления!
Индексация списков
Каждый объект в списке имеет свой индекс. Индексация начинается с 0.
К примеру, тестовый список sea_creatures индексируется так:
‘shark’ | ‘cuttlefish’ | ‘squid’ | ‘mantis shrimp’ | ‘anemone’ |
1 | 2 | 3 | 4 |
Благодаря тому, что каждый объект имеет свой индекс, со списками можно работать так же, как и с последовательными типами данных.
С помощью индекса можно запросить любой объект списка:
Диапазон индексов данного списка – от 0 до 4. Вы можете отобразить любой объект из этого списка:
Однако если заданный индекс не входит в диапазон, на экране появится сообщение об ошибке:
Индексы могут быть как положительными, так и отрицательными. Отрицательная индексация начинается с -1.
‘shark’ | ‘cuttlefish’ | ‘squid’ | ‘mantis shrimp’ | ‘anemone’ |
-5 | -4 | -3 | -2 | -1 |
К примеру, чтобы запросить объект ‘squid’ по его отрицательному индексу, нужно ввести:
Также объекты списков можно объединять со строками с помощью оператора +:
Примечание: Оператор + также может склеивать 2 или больше списков, узнать об этом больше можно далее в данном руководстве.
Выполните Итерацию списка в Python С Помощью Itertools.Цикл
Itertools-это библиотека, которая создает эффективные итераторы. Эти итераторы работают быстрее, чем обычная итерация. В этом разделе мы будем использовать itertools.cycle для выполнения итерации по списку. Эта функция цикла возвращает бесконечный итератор, который повторяет список снова и снова. Мы настроим это на повторение только один раз.
Синтаксис
Здесь iterable может быть списком, кортежем, строкой и т. Д. Метод itertools.cycle() возвращает бесконечный итератор.
Пример
import itertools iterable = .cycle(iterable) while count < len(iterable): print(next(iter_obj)) count
Объяснение
В приведенном выше примере мы сначала импортировали itertools. Затем мы использовали метод itertools.cycle() для создания бесконечного итератора. Затем мы ограничиваем количество раз, когда мы проходим через итератор, используя счетчик. После этого с помощью цикла while перебирайте итератор и увеличивайте количество в каждом цикле. Это гарантирует, что наш итератор не будет бесконечно петлять.
Itertools.cycle в основном используется для создания бесконечно циклического итератора. Это очень полезно в сценариях, где вам нужно создать бесконечный цикл без использования while.
Приложения
В этом разделе мы хотим немного расширить объем и посмотреть, как мы можем применить решения, представленные выше. Поэтому мы выбрали некоторые распространенные проблемы.
Получить конкретные индексы из списка
Чтобы получить все показатели подмножества предметов, которые удовлетворяют определенному условию, используйте список списка:
def dist(x): return (x ** 2 + x ** 2) ** 0.5 ps = filtered =
Получить конкретные строки из файла
Предположим, вы хотите получить все комментарии из файла кода. Опять же, я предлагаю использовать понимание списка и для анализа каждой строки регулярное выражение.
import re pattern = r'^#.*$' comments =
Если вы хотите узнать больше о чтенияных линиях из файла, эта статья может быть для вас.
Получить конкретную часть строки
Получить определенную часть строки или подстроки, используйте нарезку. Например, получите подстроку от 3 до 9 из строки «Python Cool!».
s = 'Python is cool!' substring = s
Получить конкретные ключи от Dict
Несмотря на то, что эта тема может быть больше в объеме словарей, я хотел бы упомянуть, что, преобразовав словарь в список, вы получаете список клавиш словаря. И теперь мы вернемся к теме получения конкретных элементов из списка.
Для более продвинутых проблем используйте элементы метода словаря (). Например, чтобы получить все ключи, значение которой является гласным:
d = {0:'a', 1:'b', 2:'c', 3:'d', 4:'e'} vowels =
Узнайте все о словарях Python здесь!
Как в Python используется оператор +
Прежде чем приступить к методам и , давайте посмотрим, как происходит конкатенация (объединение) списков при помощи оператора .
Допустим, у нас есть два списка, и , которые мы хотим объединить (то есть склеить вместе два целых списка).
list_1 = list_2 = print(list_1 + list_2) # Output print(list_1) # Output print(list_2) # Output
Если вы внимательно прочтете приведенный выше код, вы заметите следующие вещи:
- не добавляет элементы из в .
- Вместо этого создается новый список, содержащий элементы из и .
- В результате сами списки и остаются в первозданном виде.
Но что, если нам нужно не создавать новый список, а модифицировать ? Давайте воспользуемся для этого методами и .
Использование методов extend() и append() со строками
Строки, по сути своей, — последовательности символов, а значит, они относятся к итерируемым объектам. Давайте попробуем применить методы и к , а в качестве аргумента передать строку.
Добавим к списку строку ‘Happy’ при помощи метода .
list_1 = list_1.append('Happy') print(list_1) # Output
А теперь давайте попробуем сделать то же самое при помощи метода . Сейчас у нас не должно возникнуть ошибок. По идее, метод переберет строку и добавит каждый символ к . Давайте посмотрим, сработает ли.
list_1 = list_1.extend('Happy') print(list_1) # Output
Что касается временной сложности этих методов, мы интуитивно догадываемся, что имеет постоянное время выполнения, а время выполнения пропорционально зависит от длины итерируемого объекта, который передается в качестве аргумента.
6. Как разбить список Python на равные части?
Чтобы разбить список на равные части, можно воспользоваться функцией в сочетании с функцией .
# Наш список `x` x = # Разбиваем `x` на 3 части y = zip(**3) # Выводим результат list(y)
Результат:
Данный код работает следующим образом:
- Функция создает итератор последовательности.
- Выражение создает три объекта типа , каждый из них — итератор списка .
- Символ ««, стоящий перед аргументом в функции , распаковывает стоящее после него выражение таким образом, как будто мы передаем один и тот же итератор в функцию три раза, и из каждого итератора функция извлекает элемент.
Стоп! Последний шаг абсолютно непонятен!
Давайте еще раз пройдемся по шагам:
У нас есть три объекта итератора списка x
Представим их следующим образом:
В первый раз функция берет по одному элементу последовательно из итераторов списка, что дает нам следующую картину:Обратите внимание, что объекты итератора внимательно отслеживают, какой элемент идет следующим!
Во второй раз следующие элементы будут добавлены в три наши списка, что соответственно даст нам:
И в последний раз, после выполнения данной процедуры мы получим:
Соединение этих списков вместе даст нам следующий список из трех кортежей:. Если вы хотите применить эту логику в самостоятельно написанной функции, то можете получить вот такой результат:
Если вы хотите применить эту логику в самостоятельно написанной функции, то можете получить вот такой результат:
# Данная функция разбивает список на равные части def chunks(list, chunkSize): """Yield successive chunkSize-sized chunks from list.""" for i in range(0, len(list), chunkSize): yield list # Выводим результаты на экран import pprint pprint.pprint(list(chunks(range(10, 75), 10)))
Результат:
Функция принимает в качестве аргументов список и число частей, на которые его надо разделить.
Внутри нее вы видите цикл, диапазон которого задается функцией . Он начинается от 0 и заканчивается целым числом, обозначающим длину списка. Величина шага задается числом , которое является аргументом функции .
Для каждого элемента в этом списке, построенном с помощью функции , вы получаете фрагмент исходного списка, начиная с индекса элемента и заканчивая индексом + размером блока, который задан в переменной .
Заметим, что для более красивой печати мы используем функцию , что расшифровывается как pretty print.
Вместо написания функции мы также можем использовать представление списков:
# Определим наш список и размер блока list = range(0, 50) chunk = 5 # Разбиваем список на блоки for i in range(0, len(list), chunk)]
Результат:
Повторите список в Python С Помощью Модуля Numpy
Третий способ перебора списка в Python – это использование модуля Numpy. Для достижения нашей цели с помощью этого метода нам нужны два метода numpy, которые упоминаются ниже:
- numpy.nditer()
- numpy.arange()
Iterator object nditer предоставляет множество гибких способов итерации по всему списку с помощью модуля numpy. Функция href=”http://numpy.org/doc/stable/reference/generated/numpy.nditer.html”>nditer() – это вспомогательная функция, которая может использоваться от очень простых до очень продвинутых итераций. Это упрощает некоторые фундаментальные проблемы, с которыми мы сталкиваемся в итерации. href=”http://numpy.org/doc/stable/reference/generated/numpy.nditer.html”>nditer() – это вспомогательная функция, которая может использоваться от очень простых до очень продвинутых итераций. Это упрощает некоторые фундаментальные проблемы, с которыми мы сталкиваемся в итерации.
Нам также нужна другая функция для перебора списка в Python с помощью numpy, которая является numpy.arrange().numpy.arange возвращает равномерно распределенные значения в пределах заданного интервала. Значения генерируются в пределах полуоткрытого интервала [start, stop) (другими словами, интервала, включающего start, но исключающего stop).
Синтаксис:
Синтаксис numpy.nditer()
Синтаксис numpy.arrange()
- start: Параметр start используется для предоставления начального значения массива.
- stop: Этот параметр используется для предоставления конечного значения массива.
- шаг: Он обеспечивает разницу между каждым целым числом массива и генерируемой последовательностью.
Объяснение
В приведенном выше примере 1 программа np.arange(10) создает последовательность целых чисел от 0 до 9 и сохраняет ее в переменной x. После этого мы должны запустить цикл for, и, используя этот цикл for и np.nditer(x), мы будем перебирать каждый элемент списка один за другим.
Пример 2:
В этом примере мы будем итерировать 2d-массив с помощью модуля numpy. Для достижения нашей цели нам здесь нужны три функции.
- numpy.arange()
- numpy.reshape()
- numpy.nditer()
import numpy as np .arange(16) .reshape(4, 4) for x in np.nditer(a): print(x)
Объяснение:
Большая часть этого примера похожа на наш первый пример, за исключением того, что мы добавили дополнительную функцию numpy.reshape(). Функция numpy.reshape() обычно используется для придания формы нашему массиву или списку. В основном на непрофессиональном языке он преобразует размеры массива-как в этом примере мы использовали функцию reshape(), чтобы сделать массив numpy 2D-массивом.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Преобразовать список переменных клавиш, стоимость записей в Dict
Идея : Используйте Slicing, чтобы получить два отдельных списка, один с ключами, одним со значениями. Закрепите их вместе и создайте словарь, передавая ZIP-результат к конструктор.
Чтобы сделать его более визуальным, давайте возьмем в качестве примера следующий список названий города и Zip-коды (больше нет змей;)):
city_zip =
Из этого списка мы хотим создать словарь, где названия города являются ключами, а их Zip-коды являются значениями.
Существует много разных решений этой проблемы, поэтому я решил показать вам решение, которое я считаю действительно пифингом. Он использует нарезку и сочетает в себе то, что мы видели в предыдущем разделе.
Как вы знаете (если не обновлять его здесь ) Мы можем установить начальное значение, конечное значение и значение шага для нарезки нарезки. Так с Мы получаем все названия города и с Мы получаем почтовый индекс. Положить все вместе, мы получаем этот код:
city_zip = city = city_zip zip_code = city_zip d = dict(zip(city, zip_code))
Операции со списками в Python
К спискам можно применить встроенные функции Python, такие как , и , чтобы получить длину списка, наименьший и наибольший элементы соответственно.
Поскольку наш содержит только строки, возвращает строку, которая шла бы первой, если бы список был упорядочен в алфавитном порядке. возвращает строку, которая шла бы последней.
Посмотрим на это в коде:
print(len(shopping_list)) >> 6 print(max(shopping_list)) >> pens print(min(shopping_list)) >> apples
Мы можем создавать новые списки, объединяя уже существующие — так же, как можем объединять списки покупок.
list_2 = shopping_list + print(list_2) >>
Встроенные функции
print (x, sep = 'y') печатает x объектов, разделенных y
len (x) возвращает длину x (s, L или D)
min (L ) возвращает минимальное значение в L
max (L) возвращает максимальное значение в L
sum (L) возвращает сумму значений в диапазоне L
range(n1,n2,n) (n1, n2, n) возвращает последовательность чисел от n1 до n2 с шагом n
abs (n) возвращает абсолютное значение n
round (n1, n) возвращает число n1, округленное до n цифр
type (x) возвращает тип x (string, float, list, dict…)
str (x) преобразует x в string
list (x) преобразует x в список
int (x) преобразует x в целое число
float (x) преобразует x в число с плавающей запятой
help (s) печатает справку о x
map (function, L) Применяет функцию к значениям в L
Список
Список (list) представляет тип данных, который хранит набор или последовательность элементов. Для создания списка в квадратных скобках через запятую перечисляются все его элементы.
Создание пустого списка
numbers = []
Создание списка чисел:
numbers = # имя списка numbers, он содержит 5 элементов
Создание списка слов:
words = # имя списка words, он содержит 4 элемента
Создание списка из элементов разного типа
listNum = # имя списка listNum, список содержит целые числа и строки
Для управления элементами списки имеют целый ряд методов. Некоторые из них:
append(item): добавляет элемент item в конец списка
insert(index, item): добавляет элемент item в список по индексу index
remove(item): удаляет элемент item. Удаляется только первое вхождение элемента. Если элемент не найден, генерирует исключение ValueError
clear(): удаление всех элементов из списка
index(item): возвращает индекс элемента item. Если элемент не найден, генерирует исключение ValueError
pop(): удаляет и возвращает элемент по индексу index. Если индекс не передан, то просто удаляет последний элемент.
count(item): возвращает количество вхождений элемента item в список
sort(): сортирует элементы. По умолчанию сортирует по возрастанию. Но с помощью параметра key мы можем передать функцию сортировки.
reverse(): расставляет все элементы в списке в обратном порядке
Кроме того, Python предоставляет ряд встроенных функций для работы со списками:
len(list): возвращает длину списка
sorted(list, ): возвращает отсортированный список
min(list): возвращает наименьший элемент списка
Список Python POP () Несколько элементов
Если вы можете поп- один Элемент из списка Python, естественный вопрос, если вы также можете поп- несколько элементы одновременно?
Ответ нет. Вы не можете напрямую поп-кратную элемент из списка. Но вы можете сделать это косвенно с помощью простого заявления о понимании списка.
Список Python POP () Первые N элементов
Скажем, вы хотите поп-первые N элементов из списка. Как ты это делаешь?
Вы просто создаете список значений, используя понимание списка [List.pop (0) Чтобы удалить и вернуть первый Элементы списка.
Вот еще один пример:
>>> lst = >>> popped = >>> popped >>> lst
Скопчатый список содержит первые пять элементов. Оригинальный список имеет только один элемент.
Список Python POP () Последние n элементов
Скажем, вы хотите попять последние N элементов из списка. Как ты это делаешь?
Вы просто создаете список значений, используя понимание списка [List.pop () Чтобы удалить и вернуть последний Элементы списка.
Вот еще один пример:
>>> lst = >>> >>> lst
Скопчатый список содержит последние пять элементов. Оригинальный список имеет только один элемент.
Список Python POP () по значению
В предыдущих двух примерах вы видели, как поп-элементы по индексу. Но вы также можете пойти по стоимости?
Да, вы можете использовать Способ, который дает вам индекс значения элемента в списке. Теперь вы можете использовать Способ этого индекса Чтобы удалить значение из списка и получить результат в качестве возвращаемого значения.
Вот пример, где вы хотите поп-элемент 7 из списка и хранить результат в переменной Отказ
>>> primes = >>> some_prime = primes.pop(primes.index(7)) >>> some_prime 7
Если вы не заинтересованы в возвращенной стоимости, но вы хотите только удалить первое вхождение значения В Используйте метод.
Связанная статья:
Список Python Удалить ()
2. Как лучше выбирать элементы из списка?
Если вы хотите продуктивно работать со списками, то должны уметь получать доступ к данным, хранящимся в них.
Обычно мы получаем доступ к элементам списков, чтобы изменять определенные значения, обновлять или удалять их, или выполнять какие-либо другие операции с ними. Мы получаем доступ к элементам списков и, собственно, ко всем другим типам последовательностей, при помощи оператора индекса . Внутри него мы помещаем целое число.
# Выбираем первый элемент списка oneZooAnimal = biggerZoo # Выводим на экран переменную `oneZooAnimal` print(oneZooAnimal)
Запустите данный код и убедитесь, что вы получите первый элемент списка, сохраненного в переменную . Это может быть поначалу несколько непривычно, но нумерация начинается с числа , а не .
Как получить последний элемент списка?
Ответ на этот вопрос является дополнением к объяснению в предыдущем разделе.
Попробуйте ввести отрицательное значение, например, или , в оператор индекса, чтобы получить последние элементы нашего списка !
# Вставляем -1 monkeys = biggerZoo print(monkeys) # А теперь -2 zebra = biggerZoo print(zebra)
Не правда ли, не слишком сложно?
Что означает ошибка «Index Out Of Range»?
Эта ошибка одна из тех, которые вы будете видеть достаточно часто, особенно если вы новичок в программировании.
Лучший способ понять эту ошибку — попробовать ее получить самостоятельно.
Возьмите ваш список и передайте в оператор индекса либо очень маленькое отрицательное число, либо очень большое положительное число.
Как видите, вы можете получить ошибку «Индекс вне диапазона» в случаях, когда вы передаете в оператор индекса целочисленное значение, не попадающее в диапазон значений индекса списка. Это означает, что вы присваиваете значение или ссылаетесь на (пока) несуществующий индекс.
Срезы в списках
Если вы новичок в программировании и в Python, этот вопрос может показаться одним из наиболее запутанных.
Обычно нотация срезов используется, когда мы хотим выбрать более одного элемента списка одновременно. Как и при выборе одного элемента из списка, мы используем двойные скобки. Отличие же состоит в том, что теперь мы еще используем внутри скобок двоеточие. Это выглядит следующим образом:
# Используем нотацию срезов someZooAnimals = biggerZoo # Выводим на экран то, что мы выбрали print(someZooAnimals) # Теперь поменяем местами 2 и двоеточие otherZooAnimals = biggerZoo # Выводим на экран полученный результат print(otherZooAnimals)
Вы можете видеть, что в первом случае мы выводим на экран список начиная с его элемента , который имеет индекс . Иными словами, мы начинаем с индекса и идем до конца списка, так как другой индекс не указан.
Что же происходит во втором случае, когда мы поменяли местами индекс и двоеточие? Вы можете видеть, что мы получаем список из двух элементов, и . В данном случае мы стартуем с индекса и доходим до индекса (не включая его). Как вы можете видеть, результат не будет включать элемент .
В общем, подводя итоги:
# элементы берутся от start до end (но элемент под номером end не входит в диапазон!) a # элементы берутся начиная со start и до конца a # элементы берутся с начала до end (но элемент под номером end не входит в диапазон!) a
Совет: передавая в оператор индекса только двоеточие, мы создаем копию списка.
В дополнение к простой нотации срезов, мы еще можем задать значение шага, с которым будут выбираться значения. В обобщенном виде нотация будет иметь следующий вид:
# Начиная со start, не доходя до end, с шагом step a
Так что же по сути дает значение шага?
Ну, это позволяет вам буквально шагать по списку и выбирать только те элементы, которые включает в себя значение вашего шага. Вот пример:
Обратите внимание, что если вы не указали какое-либо значение шага, оно будет просто установлено в значение. При проходе по списку ни один элемент пропущен не будет
Также всегда помните, что ваш результат не включает индекс конечного значения, который вы указали в записи среза!
Как случайным образом выбрать элемент из списка?
Для этого мы используем пакет .
# Импортируем функцию `choice` из библиотеки `random` from random import choice # Создадим список из первых четырех букв алфавита list = # Выведем на экран случайный элемент списка print(choice(list))
Если мы хотим выбрать случайный элемент из списка по индексу, то можем использовать метод из той же библиотеки .
# Импортируем функцию `randrange` из библиотеки `random` from random import randrange # Создадим список из первых четырех букв алфавита randomLetters = # Выбираем случайный индекс нашего списка randomIndex = randrange(0,len(randomLetters)) # Выводим случайный элемент на экран print(randomLetters)
Совет: обратите внимание на библиотеку , она может вам пригодиться во многих случаях при программировании на Python