Программирование python с нуля: Самоучитель Python | Python 3 для начинающих и чайников

Списки (list). Функции и методы списков

Сегодня я расскажу о таком типе данных, как списки, операциях над ними и методах, о генераторах списков и о применении списков.

Что такое списки?

Списки в Python — упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).

Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:

>>> list('список')
['с', 'п', 'и', 'с', 'о', 'к']

Список можно создать и при помощи литерала:

>>> s = []  # Пустой список
>>> l = ['s', 'p', ['isok'], 2]
>>> s
[]
>>> l
['s', 'p', ['isok'], 2]

Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.

И еще один способ создать список — это генераторы списков. Генератор списков — способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for.

>>> c = [c * 3 for c in 'list']
>>> c
['lll', 'iii', 'sss', 'ttt']

Возможна и более сложная конструкция генератора списков:

>>> c = [c * 3 for c in 'list' if c != 'i']
>>> c
['lll', 'sss', 'ttt']
>>> c = [c + d for c in 'list' if c != 'i' for d in 'spam' if d != 'a']
>>> c
['ls', 'lp', 'lm', 'ss', 'sp', 'sm', 'ts', 'tp', 'tm']

Но в сложных случаях лучше пользоваться обычным циклом for для генерации списков.

Функции и методы списков

Создать создали, теперь нужно со списком что-то делать. Для списков доступны основные встроенные функции, а также методы списков.

Таблица «методы списков»

МетодЧто делает
list.append(x)Добавляет элемент в конец списка
list. extend(L)Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)Вставляет на i-ый элемент значение x
list.remove(x)Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop([i])Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]])Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x)Возвращает количество элементов со значением x
list.sort([key=функция])Сортирует список на основе функции
list.reverse()Разворачивает список
list.copy()Поверхностная копия списка
list.clear()Очищает список

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

>>> l = [1, 2, 3, 5, 7]
>>> l.sort()
>>> l
[1, 2, 3, 5, 7]
>>> l = l.sort()
>>> print(l)
None

И, напоследок, примеры работы со списками:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

Изредка, для увеличения производительности, списки заменяют гораздо менее гибкими массивами (хотя в таких случаях обычно используют сторонние библиотеки, например NumPy).

Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>

Словари (dict) и работа с ними.

Методы словарей

Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.

Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.

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

>>> d = {}
>>> d
{}
>>> d = {'dict': 1, 'dictionary': 2}
>>> d
{'dict': 1, 'dictionary': 2}

Во-вторых, с помощью функции dict:

>>> d = dict(short='dict', long='dictionary')
>>> d
{'short': 'dict', 'long': 'dictionary'}
>>> d = dict([(1, 1), (2, 4)])
>>> d
{1: 1, 2: 4}

В-третьих, с помощью метода fromkeys:

>>> d = dict.fromkeys(['a', 'b'])
>>> d
{'a': None, 'b': None}
>>> d = dict.fromkeys(['a', 'b'], 100)
>>> d
{'a': 100, 'b': 100}

В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.

>>> d = {a: a ** 2 for a in range(7)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36}

Теперь попробуем добавить записей в словарь и извлечь значения ключей:

>>> d = {1: 2, 2: 4, 3: 9}
>>> d[1]
2
>>> d[4] = 4 ** 2
>>> d
{1: 2, 2: 4, 3: 9, 4: 16}
>>> d['1']
Traceback (most recent call last):
  File "", line 1, in
    d['1']
KeyError: '1'

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

Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.

dict.clear() — очищает словарь.

dict.copy() — возвращает копию словаря.

classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).

dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).

dict.items() — возвращает пары (ключ, значение).

dict.keys() — возвращает ключи в словаре.

dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).

dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.

dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).

dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).

dict.values() — возвращает значения в словаре.

Для вставки кода на Python в комментарий заключайте его в теги <pre><code>Ваш код</code></pre>

Словарь Python

Резюме : в этом руководстве вы узнаете о словаре Python, который позволяет систематизировать связанную информацию.

Введение в словарь Python тип

Словарь Python представляет собой набор пар ключ-значение, где каждый ключ связан со значением.

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

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

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

В следующем примере определяется пустой словарь:

 empty_dict = {}  Язык кода: Python (python)  

Как правило, пустой словарь определяется перед циклом, либо циклом for, либо циклом while. А внутри цикла вы добавляете в словарь пары ключ-значение.

Чтобы найти тип словаря, вы используете функцию type() следующим образом:

 empty_dict = {}
печать (тип (пустой_дикт))
  Язык кода: Python (python)  

Вывод:

   Язык кода: Python (python)  

В следующем примере определяется словарь с некоторыми парами ключ-значение:

 person = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
  Язык кода: Python (python)  

В словаре person есть пять пар ключ-значение, которые представляют имя, фамилию, возраст, любимые цвета и активный статус.

Доступ к значениям в словаре

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

1) Использование квадратных скобок

Чтобы получить доступ к значению, связанному с ключом, вы помещаете ключ в квадратные скобки:

 DICT [KEY]  Кодекс Язык: Python (Python)  

На следующем показано, как получить значения, связанные с ключом First_name и Last_name в Person Dicary:

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
печать (человек ['first_name'])
print(person['last_name'])  Язык кода: Python (python)  

Вывод:

 Джон
Doe  Язык кода: Python (python)  

2) Использование метода get()

Если вы попытаетесь получить доступ к несуществующему ключу, вы получите сообщение об ошибке. Например:

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
ssn = person['ssn']  Язык кода: Python (python)  

Ошибка:

 Трассировка (последний последний вызов):
  Файл "dictionary.py", строка 15, в 
    ssn = человек['ssn']
KeyError: 'ssn'  Язык кода: Python (python)  

Чтобы избежать этой ошибки, вы можете использовать метод get() словаря:

 person = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
ssn = человек.получить('ssn')
печать (ССН)
  Язык кода: Python (python)  

Вывод:

 Нет  Язык кода: Python (python)  

Если ключ не существует, get() 9Метод 0016 возвращает None вместо выдачи KeyError . Обратите внимание, что None означает, что значения не существует.

Метод get() также возвращает значение по умолчанию, когда ключ не существует, путем передачи значения по умолчанию во второй аргумент.

В следующем примере возвращается строка '000-00-0000' , если ключ ssn не существует в словаре person :

 person = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
ssn = person.get('ssn', '000-00-0000')
печать (ссн)  Язык кода: Python (python)  

Вывод:

 000-00-0000  Язык кода: Python (python)  

Добавление новых пар ключ-значение

Поскольку словарь имеет динамическую структуру, вы можете добавлять новые пары ключ-значение к нему в любое время.

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

В следующем примере новая пара ключ-значение добавляется к человек словарь:

 человек ['пол'] = 'Женщина'
  Язык кода: Python (python)  

Изменение значений в паре ключ-значение

Чтобы изменить значение, связанное с ключом, вы указываете имя словаря с ключом в квадратных скобках и новое значение, связанное с ключом:

 dict[key] = новое_значение  Язык кода: Python (python)  

В следующем примере изменяется значение, связанное с age из человек словарь:

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
человек['возраст'] = 26
print(person)  Язык кода: Python (python)  

Вывод:

 {'first_name': 'John', 'last_name': 'Doe', 'age': 26, 'favorite_colors': ['blue' , 'зеленый'], 'активный': True}  Язык кода: Python (python)  

Удаление пар ключ-значение

Чтобы удалить пару ключ-значение по ключу, вы используете 9Оператор 0015 del :

 del dict[key]  Язык кода: Python (python)  

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

В следующем примере ключ «активный» удаляется из словаря person :

 person = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
дель человек ['активный']
print(person)  Язык кода: Python (python)  

Вывод:

 {'first_name': 'Джон', 'last_name': 'Доу', 'возраст': 25, 'любимые_цвета': ['синий', 'зеленый']}  Язык кода: Python ( python)  

Перебор словаря в цикле

Чтобы изучить словарь, вы можете использовать цикл for для перебора его пар ключ-значение, ключей или значений.

Обратите внимание, что начиная с Python 3.7, когда вы перебираете словарь в цикле, вы получаете пары ключ-значение в том же порядке, в котором вы их вставляете.

1) Зацикливание всех пар ключ-значение в словаре

Словарь Python предоставляет метод с именем items() , который возвращает объект, содержащий список пар ключ-значение в виде кортежей в списке.

Например:

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
print(person.items())  Язык кода: Python (python)  

Вывод:

 dict_items([('first_name', 'John'), ('last_name', 'Doe'), ('age' , 25), ('любимые_цвета', ['синий', 'зеленый']), ('активный', True)])  Язык кода: Python (python)  

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

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
для ключа, значение в person.items():
    print(f"{key}: {value}")  Язык кода: Python (python)  

Вывод:

 имя_имя: Джон
last_name: Доу
возраст: 25
favourite_colors: ['синий', 'зеленый']
активно: True  Язык кода: Python (python)  

Обратите внимание, что в цикле for можно использовать любое имя переменной. Они не обязательно должны быть ключом и значением .

2) Перебрать все ключи в словаре

Иногда вам просто нужно перебрать все ключи в словаре. В этом случае вы можете использовать цикл для с ключей() метод.

Метод keys() возвращает объект, содержащий список ключей в словаре.

Например:

человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
для ключа в person.keys():
    print(key)  Язык кода: Python (python)  

Вывод:

 first_name
фамилия
возраст
избранные_цвета
активен  Язык кода: Python (python)  

На самом деле циклическое перебор всех ключей является поведением по умолчанию при циклическом просмотре словаря. Поэтому вам не нужно использовать метод keys() .

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

 человек = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
за ключ лично:
    print(key)  Язык кода: Python (python)  

3) Циклический просмотр всех значений в словаре

Метод values() возвращает список значений без каких-либо ключей.

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

 person = {
    'first_name': 'Джон',
    'last_name': 'Доу',
    'возраст': 25,
    'любимые_цвета': ['синий', 'зеленый'],
    «активный»: правда
}
для значения в person.values():
    печать (значение)
  Язык кода: Python (python)  

Вывод:

 Джон
Доу
25
['цвет морской волны']
True  Язык кода: Python (python)  

Сводка

  • Словарь Python представляет собой набор пар ключ-значение, где каждый ключ имеет связанное значение.
  • Используйте квадратные скобки или метод get() для доступа к значению по его ключу.
  • Используйте оператор del , чтобы удалить пару ключ-значение по ключу из словаря.
  • Используйте цикл for для перебора ключей, значений и пар ключ-значение в словаре.

Считаете ли вы это руководство полезным?

Синтаксис Python

Резюме : в этом руководстве вы узнаете об основном синтаксисе Python, чтобы быстро начать работу с языком Python.

Пробелы и отступы

Если вы работали с другими языками программирования, такими как Java, C# или C/C++, вы знаете, что эти языки используют точки с запятой ( ; ) для разделения операторов.

Однако Python использует пробелы и отступы для построения структуры кода.

Ниже показан фрагмент кода Python:

 # определить основную функцию для вывода чего-либо
деф основной():
    я = 1
    макс = 10
    в то время как (я <макс.):
        печать (я)
        я = я + 1
# вызов функции main
main()  Язык кода: Python (python)  

Смысл кода для вас сейчас не важен. Вместо этого обратите внимание на структуру кода.

В конце каждой строки вы не видите точку с запятой для завершения оператора. И код использует отступы для форматирования кода.

Используя отступы и пробелы для организации кода, код Python получает следующие преимущества:

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

Комментарии

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

Когда интерпретатор Python выполняет код, он игнорирует комментарии.

В Python однострочный комментарий начинается с символа решетки (#), за которым следует комментарий. Например:

 # Это однострочный комментарий на Python  Кодовый язык: Python (python)  

И Python также поддерживает другие виды комментариев.

Продолжение операторов

Python использует символ новой строки для разделения операторов. Он помещает каждое утверждение в одну строку.

Однако длинная инструкция может занимать несколько строк с использованием символа обратной косой черты ( \ ).

В следующем примере показано, как использовать символ обратной косой черты ( \ ) для продолжения оператора во второй строке:

 if (a == True) и (b == False) и \
   (с == Истина):
    print("Продолжение операторов")  Язык кода: Python (python)  

Идентификаторы

Идентификаторы — это имена, которые идентифицируют переменные, функции, модули, классы и другие объекты в Python.

Имя идентификатора должно начинаться с буквы или подчеркивания ( _ ). Следующие символы могут быть буквенно-цифровыми или символами подчеркивания.

Идентификаторы Python чувствительны к регистру. Например, счетчик и счетчик являются разными идентификаторами.

Кроме того, вы не можете использовать ключевые слова Python для именования идентификаторов.

Ключевые слова

Некоторые слова в Python имеют особое значение. Они называются ключевыми словами.

Ниже показан список ключевых слов в Python:

 Класс False, наконец, возвращается
Нет продолжения для лямбда-попытки
Истинное определение от нелокального в то время как
и del global не с
как elif if или yield
утверждать иначе импортировать пропуск
брейк кроме рейза  Язык кода: Python (python)  

Python — это растущий и развивающийся язык. Таким образом, его ключевые слова будут расти и меняться.

Python предоставляет специальный модуль для вывода списка ключевых слов под названием keyword .

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

 ключевое слово импорта
print(keyword.kwlist)  Язык кода: Python (python)  

Строковые литералы

Python использует одинарные кавычки ( ' ), двойные кавычки ( " ), тройные одинарные кавычки ( ''' ) и тройные двойные кавычки ( """ ) для обозначения строкового литерала.

Строковый литерал должен быть заключен в кавычки того же типа. Например, если вы используете одинарную кавычку, чтобы начать строковый литерал, вам нужно использовать ту же одинарную кавычку, чтобы закончить его.

Ниже приведены некоторые примеры строковых литералов:

 s = 'Это строка'
печать(и)
s = "Другая строка с использованием двойных кавычек"
печать(и)
s = ''' строка может занимать
        несколько строк '''
печать(и)  Язык кода: Python (python)  

Сводка

  • Оператор Python заканчивается символом новой строки.

Читайте также: