Этот урок дает представление о Python и описание основных типов данных и структур, которые являются основными строительными блоками любого кода Python.
К концу этого урока вы должны лучше понимать различия между целыми числами, числами с плавающей запятой и & amp; строковые объекты, а также возможность создавать списки и кортежи.
Так что же такое объект в Python? На самом деле объект - это просто метка для определенного фрагмента данных в компьютере - объект на самом деле является интерфейсом для фрагмента компьютерных данных.
Существует три основных типа объектов, которые регулярно используются при кодировании с помощью Python, а именно:
Строки можно использовать в самых разных обстоятельствах, поэтому они являются очень полезными дескрипторами. Строка также может содержать 'одинарные кавычки' или "двойные кавычки". На самом деле не имеет значения, что вы используете, но надо быть последовательным. Строки также можно использовать в нескольких строках следующими способами
'''Эта строка содержится
в нескольких строках'''
"""Эта строка в двойных кавычках также
содержится в нескольких строках"""
Сейчас мы исследуем, что можно сделать с этими объектами, используя несколько примеров ниже. Чтобы запустить любой код в полях ниже, введите код, который вы хотите запустить, а затем нажмите Shift + Enter чтобы выполнить его.
Сначала взглянув на целые числа, мы можем сделать с ними много полезных математических вычислений. Запустите следующий фрагмент кода ниже, чтобы выполнить несколько примеров:
a = 4
b = 5
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Кроме того, здесь представлен оператор print()
, который позволяет выводить результаты любых вычислений на консоль при запуске.
Переменные a & b сохранены в этом сеансе, и ниже, если вы наберете print(a)
например, результат все равно будет 4. Используйте поле ниже, чтобы попрактиковаться в любых вычислениях целых чисел и операторов печати, если у вас есть желание.
print(a)
Теперь мы можем проделать те же операции, что и выше, но со смесью integers и floats:
c = 7.5
d = 1.2
print(c + d)
print(c - d)
print(c + b)
print('b divided by d:', b / d)
Наконец, мы можем перейти к строкам. Строка на самом деле уже использовалась в последнем операторе печати выше, просто она не была назначена переменной, как это было с числами с плавающей запятой. Мы можем определить строку аналогично тому, как мы определили целые числа и числа с плавающей запятой выше. Вы можете сделать ряд полезных вещей со строками, особенно если у вас есть длинная строка, которую вы хотите разделить на более мелкие строки.
a_string = 'hello'
numerical_string = '46596'
numerical_int = 46596
long_string = 'hello this is a long string'
long_string.split()
Однако вы не можете выполнять математические операции со строками если сначала не преобразовали их в целые числа
e = float(numerical_string)
print(a + e)
print(a + 'hello')
Относительно легко преобразовать один тип объекта в другой, если это возможно. Следующие фрагменты кода могут использоваться для преобразования между объектами разных типов:
int()
- преобразует в целое число.
float()
- преобразует в число с плавающей запятой.
str()
- преобразуется в строку.
Однако следует отметить, как происходит преобразование в целые числа. При преобразовании в целое число всегда будет округляться в меньшую сторону, даже если традиционно оно должно округляться в большую сторону. Например, если вы запустите,
int(4.2)
и int(4.8)
, результат для обоих будет 4.
OОдин из способов избежать этого - использовать функцию round()
, которая округляет число до нужного вам порядка значимости. Ниже показаны некоторые сравнения round с функцией int.
print(float(a))
print(str(b))
print(int(numerical_string))
print(int(4.2))
print(int(4.8))
print(round(4.835749375837,0)) #The ,0 rounds to the nearest integer.
Списки и массивы - это очень часто используемые структуры в Python (хотя, как вы увидите позже, существует множество сторонних модулей, которые расширяют и улучшают базовую концепцию списка), и важно понимать, как их использовать при кодировании на Python.
Список может быть серией чисел, строк, переменных, других списков или любой их комбинацией. Для большинства списков проще, чтобы все элементы в списке были одного типа переменных, с точки зрения доступа к элементам в списке, особенно если это делается итеративно в случае длинных списков. В поле ниже приведены несколько примеров различных типов списков.
int_list = [1,2,3,4,5]
float_list = [1.0,2.0,3.0,4.0,5.0]
str_list = ['This','is','a','long','list']
mixed_list = [4.0,3,'string',[5.0,6.0],'another_word']
Эти списки могут быть проиндексированы и нарезаны в Python, что означает выбор только тех данных, которые вы хотите использовать в любой момент.
Это делается путем запроса только желаемого значения индекса из списка. В Python первое значение списка - это 0-й член, второе - 1-й член, третье - 2-й член и так далее. Это легче объяснить на примере, поэтому, если вы возьмете приведенный выше int_list и наберете int_list[0]
, вы вернете значение 1, первое значение в списке.
Попробуйте ниже:
int_list[0]
Если у вас длинный список, вы также можете легко запросить последнее значение в списке, выполнив поиск по термину -1, например int_list[-1]
вернет 5. Это связано с тем, что структура списка Python является циклической, и поэтому, если вы возвращаетесь на один член назад от первого значения в списке, вы получаете последний член. Точно так же, int_list[-2]
вернет 4.
Также можно получить только часть списка, поставив двоеточие между двумя значениями. Например, команда float_list[2:4]
вернет [3.0,4.0]
поскольку она возвращает все, что находится после третьего значения, но до пятого значения в списке (поскольку 0 - это первое значение индекса, как указано выше). Также можно вырезать только один конец списка, используя двоеточие и только одно число, например float_list[2:]
который возвращает [3.0,4.0,5.0]
. Попробуйте нарезать приведенные ниже примеры списков:
#Slicing a list between to points
print(float_list[2:4])
#Slicing a list so it no longer contains earlier values in the list
print(float_list[2:])
mixed_list[3][0]
Если вы попробовали нарезать mixed_list
выше, то могли заметить, что mixed_list[3]
вернул список [5.0,6.0]
. Часто бывает полезно (и действительно необходимо, как будет видно позже при просмотре данных ГИС и спутниковых изображений) включать списки в другие списки. Чтобы получить доступ к отдельному значению во внутреннем списке в mixed_list
, вы снова выполняете срез, и поэтому команда mixed_list[3][0]
вернет значение 5.0.
Еще одна очень важная концепция не только в Python, но и в кодировании в целом - это цикл. Цикл можно использовать для перебора списка и выполнения одной и той же операции над каждым значением в списке.
Наиболее часто используемый цикл в Python - это цикл for, в котором определены начальная и конечная точки, а также определенный размер шага. Приведу пример:
for i in range(0,5,1):
print(i)
В этом примере цикл for будет перебирать диапазон чисел от 0 до 4 (помня, что Python начинает нумерацию с 0) с размером шага 1. i - это итерация, поэтому мы печатаем итерацию для каждого значения. Выполните приведенный ниже код и убедитесь, что это правда. По правде говоря, проще просто написать range(5):
по умолчанию итерация выполняется с шагом в один и начинается с нуля.
for i in range(5):
print(i)
Итеративная переменная (i) сама по себе не особенно полезна. Однако, используя только что приобретенные знания о срезах, вы можете использовать циклы for для итерации посредством печати каждого значения списка по отдельности, изменяя срез с определенного известного значения (например, str_list[0]
) на изменяющееся значение на основе на итерации цикла (такой, как str_list[i]
). Попробуйте распечатать значения str_list
в цикле for ниже.
for i in range(5):
print(str_list[i])
В некоторых случаях мы не знаем длину списка, который мы повторяем, поэтому вместо ручного подсчета длины списка мы можем узнать длину списка в Python, а затем выбрать итерацию по всему этому списку.
Это делается с помощью команды len()
. Например, len(str_list)
вернет значение 5. Затем его можно поместить в цикл for для итерации по нему следующим образом (выполнение приведенной ниже функции должно дать результат, аналогичный предыдущему):
for i in range(len(str_list)):
print(str_list[i])
Однако это выглядит немного неуклюже, и есть более чистые и эффективные способы итерации по списку. Например, функция, the enumerate
эффективно выполняет роль функций range(len())
и print()
в приведенном выше примере. Попробуйте следующий пример, чтобы увидеть функцию перечисления в действии.
for i, val in enumerate(str_list):
print(val)
Как вы видели в приведенной выше функции перечисления, фактическое значение в списке str_list
сохраняется в переменной val
а каждой итерации, поэтому его можно использовать непосредственно на каждой итерации.
Цикл for - очень полезный и универсальный инструмент. Однако это может быть немного медленным в случае очень длинного списка или если в список вносятся простые изменения. В этих случаях имеет смысл использовать list comprehension, которое очень похоже на цикл for. Они имеют следующий вид:
[print(i) for i in str_list]
Этот list comprehension вернет именно то, что было в цикле for, напечатанном выше. Это также может выполнять полезные операции, такие как квадрат каждого значения в списке. Это показано в следующем примере:
[i**2 for i in int_list]
В приведенном выше примере использование i**2
выполняет возведение в квадрат каждого значения в списке, а двойная звездочка в любой точке обозначает увеличение значения до степени, а 2 означает, что мы будем повышать его до второй степени, квадрат. Попробуйте составить список, в котором можно найти куб каждого термина в float_list ниже.
[i**3 for i in int_list]