Как узнать тип элемента в python
Перейти к содержимому

Как узнать тип элемента в python

  • автор:

Типы в питоне (Python) и их проверка

Проверка типов — это новая функция Python, которая была добавлена ​​в Python 3.5. Она также известна как аннотация типа . Она позволяет добавлять к функциям, объявлениям переменных специальный синтаксис, который информирует разработчика, какой тип имеет аргумент или переменная.

Python не применяет подсказки типов. Но некоторые среды разработки, такие как PyCharm, поддерживают подсказки типов и выделяют ошибки ввода.

Плюсы и минусы подсказок типов

Преимущества использования подсказок типов:

  • Это отличный способ документировать код.
  • Подсказки типов могут сделать IDE и линтеры более отзывчивыми.
  • Повышают качество разрабатываемого кода.

В то же время подсказки типов имеют и недостатки:

  • Увеличивается объем кода.
  • Подсказки типов увеличивают время, затрачиваемое на разработку.
  • Они работают только в Python 3.5+.
  • Могут привести к потерям времени при запуске кода. Особенно если вы импортируете модульtyping.

Когда необходимо использовать подсказки типов:

  • При написании объемного кода.
  • При создании библиотек, предназначенных для использования другими разработчиками.
  • При написании модульных тестов.

Встроенные подсказки типов

В Python можно добавить подсказку для следующих типов данных:

Они могут использоваться как в функциях, так и в аннотациях переменных. Концепция аннотации переменной была добавлена ​​в Python 3.6.

x: int # переменная с именем x без инициализации

y: float = 1.0 # переменная типа float, инициализированная значением 1,0

a: str = ‘Подсказка типа Hello’

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

Подсказки типов для наборов

Коллекция в Python представляет собой группу элементов. Поддерживаемые типы коллекций и последовательностей: list, dict, tuple и set. Но нельзя комментировать переменные, используя эти встроенные типы. Вместо этого вы должны использовать модуль typing.

Рассмотрим несколько примеров:

>>> from typing import List >>> names: List[str] = ['Mike'] >>> names ['Mike']

Мы создали list с одной str в нем. Это указывает, что вы создаете list, состоящий из строк. Также можно указать тип каждого элемента в списке:

>>> from typing import List >>> names: List[str, str] = ['Mike', 'James']

Подсказки для кортежей похожи на подсказки списков:

>>> from typing import Tuple >>> s: Tuple[int, float, str] = (5, 3.14, 'hello')

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

>>> from typing import Dict >>> d: Dict[str, int] =

Если коллекция имеет непостоянный размер, можно использовать кортежи:

>>> from typing import Tuple >>> t: Tuple[int, . ] = (4, 5, 6)

Значение подсказки, которое является None

Иногда значение переменной нужно инициализировать как None. Для этого можно использовать Optional:

>>> from typing import Optional >>> result: Optional[str] = my_function()

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

>>> assert result is not None

Подсказки типов для функций

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

def adder(x: int, y: int) -> None: print(f'The total of + = ')

В этом примере adder() принимает два аргумента: x и y. Они оба должны быть целыми числами. Тип возвращаемого значения None указывается с помощью -> после заключительных скобок, но перед двоеточием.

Допустим, что нужно присвоить переменной функцию adder(). Вы можете аннотировать переменную Callable следующим образом:

from typing import Callable def adder(x: int, y: int) -> None: print(f'The total of + = ') a: Callable[[int, int], None] = adder

Переменная Callable принимает список аргументов для функции. Это также позволяет указать тип возвращаемого значения.

Рассмотрим еще один пример, в котором мы передаем более сложные аргументы:

from typing import Tuple, Optional def some_func(x: int, y: Tuple[str, str], z: Optional[float]: = None): -> Optional[str]: if x > 10: return None return 'You called some_func'

Мы создали функцию some_func(), которая принимает три аргумента:

  • int;
  • tuple строк из двух элементов;
  • необязательный аргумент float, который по умолчанию является

При использовании подсказок типа в функции со значением по умолчанию нужно добавить пробел до и после знака равенства.

Это также возвращает либо None, либо строку.

Что делать, когда все усложняется

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

>>> from typing import Union >>> z: Union[str, int]

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

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

x: Any = some_function()

Классы

Пример использования подсказки типа для класса:

>>> class Test: . pass . >>> t: Test = Test()

Это полезно при передаче экземпляров класса между функциями или методами.

Декораторы

Декораторы – это функции, которые принимают другие функции и модифицируют их. Добавление подсказок к декораторам выглядит нестандартно. Например:

>>> from typing import Any, Callable, TypeVar, cast >>> F = TypeVar('F', bound=Callable[. Any]) >>> def my_decorator(func: F) -> F: def wrapper(*args, **kwds): print("Calling", func) return func(*args, **kwds) return cast(F, wrapper)

TypeVar — это способ указать пользовательский тип. Для этого создается пользовательский тип Callable, который может принимать любое количество аргументов и возвращает Any. Затем создается декоратор и добавляется новый тип в качестве подсказки типа для первого аргумента и возвращаемого типа.

Функция cast используется только Mypy – утилитой проверки статического кода. Она предназначена для приведения значения к указанному типу. В данном случае вы приводите функцию wrapper к типу F.

Псевдонимы

В Python можно создать новое имя для типа. Например, переименовать тип List в Vector:

>>> from typing import List >>> Vector = List[int] >>> def some_function(a: Vector) -> None: . print(a)

Теперь Vector и List ссылаются на однотипные подсказки. Псевдонимы подсказок типов полезны для сложных типов.

В документации по типам есть хороший пример, который приведен ниже:

from typing import Dict, Tuple ConnectionOptions = Dict[str, str] Address = Tuple[str, int] Server = Tuple[Address, ConnectionOptions]

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

Другие подсказки типов

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

Полная документация по различным типам подсказок доступна здесь.

Комментарии типов

Подсказки типов не поддерживаются в Python 2. Но можно использовать синтаксис, аналогичный комментариям:

def some_function(a): # type: str -> None print(a)

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

def some_function(a, b, c): # type: (str, int, int) -> None print(a)

Некоторые IDE Python вместо этого поддерживают подсказки типов в строке документации. Например, PyCharm позволяет сделать следующее:

def some_function(a, b): """ @type a: int @type b: float "

Mypy будет работать с другими комментариями, но не с этими. Если вы работаете в PyCharm, то можете использовать любую форму подсказок типов.

Статическая проверка типа

Чтобы запустить Mypy в своем коде, необходимо установить его, используя pip:

$ pip install mypy

Затем запустить его следующей командой:

$ mypy my_program.py

После этого Mypy будет работать с вашим кодом, и выводить любые ошибки типа. Он делает это без запуска кода.

Если в программе нет подсказок типа, то Mypy не будет выводить отчет об ошибках.

Напишем функцию подсказок неверного типа и сохраним ее в файл bad_type_hinting.py:

# bad_type_hinting.py def my_function(a: str, b: str) -> None: return a.keys() + b.keys()

Теперь можно запустить Mypy:

$ mypy bad_type_hinting.py bad_type_hinting.py:4: error: "str" has no attribute "keys" Found 1 error in 1 file (checked 1 source file)

Мы получим сообщение о проблеме в строке 4. Строка не содержит атрибут keys(). Обновим код, чтобы удалить вызовы несуществующего метода keys(). Сохраните эти изменения в новом файле с именем bad_type_hinting2.py:

# bad_type_hinting2.py def my_function(a: str, b: str) -> None: return a + b

Снова запустим Mypy:

$ mypy bad_type_hinting2.py bad_type_hinting2.py:4: error: No return value expected Found 1 error in 1 file (checked 1 source file)

Ошибка все еще не устранена. На этот раз можно исправить код так, чтобы он ничего не возвращал. А также исправить подсказку, чтобы она возвращала str.

Сохраним следующий код в файле с именем good_type_hinting.py:

# good_type_hinting.py def my_function(a: str, b: str) -> str: return a + b

Снова запустим Mypy:

$ mypy good_type_hinting.py Success: no issues found in 1 source file

На этот раз в коде нет проблем.

Заключение

Вот несколько источников для эффективного использования подсказок типов.

  • Справочник Mypyпо подсказкам типов.
  • Typeshed
  • Документация по модулю типов

Подсказки типов не обязательны в Python. Но они добавляют ясность и могут оказаться действительно полезными.

Python. Урок 3. Типы и модель данных

Follow us on Google Plus Follow us on rss

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

Немного о типизации языков программирования

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

Неявная типизация означает, что при объявлении переменной вам не нужно указывать её тип, при явной – это делать необходимо. В качестве примера языков с явной типизацией можно привести Java, C++. Вот как будет выглядеть объявление целочисленной переменной в Java и Python.

int a = 1;
a = 1 

Также языки бывают с динамической и статической типизацией. В первом случае тип переменной определяется непосредственно при выполнении программы, во втором – на этапе компиляции (о компиляции и интерпретации кратко рассказано в уроке 2). Как уже было сказано Python – это динамически типизированный язык, такие языки как С, C#, Java – статически типизированные.

Сильная типизация не позволяет производить операции в выражениях с данными различных типов, слабая – позволяет. В языках с сильной типизацией вы не можете складывать например строки и числа, нужно все приводить к одному типу. К первой группе можно отнести Python, Java, ко второй – С и С++.

За более подробным разъяснением данного вопроса советуем обратиться к статье “Ликбез по типизации в языках программирования” .

Типы данных в Python

В Python типы данных можно разделить на встроенные в интерпретатор (built-in) и не встроенные, которые можно использовать при импортировании соответствующих модулей.

К основным встроенным типам относятся:

  1. None (неопределенное значение переменной)
  2. Логические переменные (Boolean Type)
  3. Числа (Numeric Type)
    1. int – целое число
    2. float – число с плавающей точкой
    3. complex – комплексное число
    1. list – список
    2. tuple – кортеж
    3. range – диапазон
    1. str
    1. bytes – байты
    2. bytearray – массивы байт
    3. memoryview – специальные объекты для доступа к внутренним данным объекта через protocol buffer
    1. set – множество
    2. frozenset – неизменяемое множество
    1. dict – словарь

    Модель данных

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

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

    b = 5 

    объявляет переменную b и присваивает ей значение 5.

    Целочисленное значение 5 в рамках языка Python по сути своей является объектом. Объект, в данном случае – это абстракция для представления данных, данные – это числа, списки, строки и т.п. При этом, под данными следует понимать как непосредственно сами объекты, так и отношения между ними (об этом чуть позже). Каждый объект имеет три атрибута – это идентификатор, значение и тип. Идентификатор – это уникальный признак объекта, позволяющий отличать объекты друг от друга, а значение – непосредственно информация, хранящаяся в памяти, которой управляет интерпретатор.

    При инициализации переменной, на уровне интерпретатора, происходит следующее:

    • создается целочисленный объект 5 (можно представить, что в этот момент создается ячейка и 5 кладется в эту ячейку);
    • данный объект имеет некоторый идентификатор, значение: 5, и тип: целое число;
    • посредством оператора “=” создается ссылка между переменной b и целочисленным объектом 5 (переменная b ссылается на объект 5).

    Имя переменной не должно совпадать с ключевыми словами интерпретатора Python. Список ключевых слов можно найти здесь . Также его можно получить непосредственно в программе, для этого нужно подключить модуль keyword и воспользоваться командой keyword.kwlist.

    >>> import keyword >>> print("Python keywords: ", keyword.kwlist)

    Проверить является или нет идентификатор ключевым словом можно так:

    >>> keyword.iskeyword("try") True >>> keyword.iskeyword("b") False 

    Для того, чтобы посмотреть на объект с каким идентификатором ссылается данная переменная, можно использовать функцию id().

    >>> a = 4 >>> b = 5 >>> id(a) 1829984576 >>> id(b) 1829984592 >>> a = b >>> id(a) 1829984592 

    Как видно из примера, идентификатор – это некоторое целочисленное значение, посредством которого уникально адресуется объект. Изначально переменная a ссылается на объект 4 с идентификатором 1829984576, переменная b – на объект с id = 1829984592. После выполнения операции присваивания a = b, переменная a стала ссылаться на тот же объект, что и b.

    Python data model work

    Тип переменной можно определить с помощью функции type(). Пример использования приведен ниже.

    >>> a = 10 >>> b = "hello" >>> c = (1, 2) >>> type(a) class 'int'> >>> type(b) class 'str'> >>> type(c) class 'tuple'> 

    Изменяемые и неизменяемые типы данных

    В Python существуют изменяемые и неизменяемые типы.

    К неизменяемым (immutable) типам относятся: целые числа (int), числа с плавающей точкой (float), комплексные числа (complex), логические переменные (bool), кортежи (tuple), строки (str) и неизменяемые множества (frozen set).

    К изменяемым (mutable) типам относятся: списки (list), множества (set), словари (dict).

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

    Неизменяемость типа данных означает, что созданный объект больше не изменяется. Например, если мы объявим переменную k = 15, то будет создан объект со значением 15, типа int и идентификатором, который можно узнать с помощью функции id().

    >>> k = 15 >>> id(k) 1672501744 >>> type(k) class 'int'> 

    Объект с id = 1672501744 будет иметь значение 15 и изменить его уже нельзя.

    Если тип данных изменяемый, то можно менять значение объекта. Например, создадим список [1, 2], а потом заменим второй элемент на 3.

    >>> a = [1, 2] >>> id(a) 47997336 >>> a[1] = 3 >>> a [1, 3] >>> id(a) 47997336 

    Как видно, объект на который ссылается переменная a, был изменен. Это можно проиллюстрировать следующим рисунком.

    Пример изменяемого объекта

    В рассмотренном случае, в качестве данных списка, выступают не объекты, а отношения между объектами. Т.е. в переменной a хранятся ссылки на объекты содержащие числа 1 и 3, а не непосредственно сами эти числа.

    P.S.

    Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

    Раздел: Python Уроки по Python Метки: Python, Уроки Python

    Python. Урок 3. Типы и модель данных : 12 комментариев

    1. Артем 25.04.2018 У Вас в коде
      >>> print “Python keywords: “, keyword.kwlist
      не хватает круглых скобок:
      >>> print(“Python keywords: “, keyword.kwlist)
    1. writer 25.04.2018 Спасибо! Поправил.

    Типы данных

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

    a = 5 

    Переменная a содержит целочисленное значение пять, и мы не определили ее тип. Интерпретатор Python автоматически интерпретирует переменную a как целочисленный тип.

    Python позволяет нам проверить тип переменной, используемой в программе. Python предоставляет нам функцию type() , которая возвращает тип переданной переменной.

    Рассмотрим следующий пример для определения значений различных типов данных и проверки их типа.

    a=10 b="Hi Python" c = 10.5 print(type(a)) print(type(b)) print(type(c)) 

    Стандартные типы данных

    Переменная может содержать различные типы значений. Например, имя человека должно храниться как строка, а его id — как целое число.

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

    1. Числовой тип
    2. Тип последовательности
    3. Логический тип (Dictionary)
    4. Множество (Set)
    5. Словарь (Dictionary)

    Description

    В этом разделе учебника мы дадим краткое представление о перечисленных выше типах данных.

    Числовой тип

    Number хранит числовые значения. Целочисленные, плавающие и комплексные значения относятся к типу данных Python Numbers. Python предоставляет функцию type() , чтобы узнать тип данных переменной. Аналогично, функция isinstance() используется для проверки принадлежности объекта к определенному классу.

    Python создает объекты Number, когда переменной присваивается число. Например;

    a = 5 print("The type of a", type(a)) b = 40.5 print("The type of b", type(b)) c = 1+3j print("The type of c", type(c)) print(" c is a complex number", isinstance(1+3j,complex)) 
    The type of a The type of b The type of c c is complex number: True 

    Python поддерживает три типа числовых данных.

    • Int — Целое значение может быть любой длины, например, целые числа 10, 2, 29, -20, -150 и т.д. В Python нет ограничений на длину целого числа.
    • Float — Float используется для хранения чисел с плавающей точкой, таких как 1.9, 9.902, 15.2 и т.д. Оно имеет точность до 15 знаков после запятой.
    • complex — Комплексное число содержит упорядоченную пару, т.е. x + iy, где x и y обозначают действительную и мнимую части, соответственно. Например, 2.14j, 2.0 + 2.3j и т.д.

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

    Строка

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

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

    В случае работы со строками оператор + используется для конкатенации двух строк, так как операция «hello «+» python» возвращает «hello python» .

    Оператор * известен как оператор повторения, поскольку операция «Python» \*2 возвращает ‘Python Python’ .

    Следующий пример иллюстрирует строку в Python.

    Пример — 1

    str = "string using double quotes" print(str) s = '''''A multiline string''' print(s) 
    string using double quotes A multiline string 

    Пример — 2

    str1 = 'hello javatpoint' #string str1 str2 = ' how are you' #string str2 print (str1[0:2]) #printing first two character using slice operator print (str1[4]) #printing first two character using slice operator print (str1*2) #printing the string twice print (str1 + str2) #printing the concatenation of str1 and str2 
    he o hello javatpointhello javatpoint hello javatpoint how are you 
    Список

    Списки (List) в Python похожи на массивы в C. Однако список может содержать данные разных типов. Элементы, хранящиеся в списке, разделяются запятой , и заключаются в квадратные скобки [] .

    Мы можем использовать операторы slice : для доступа к данным списка. Оператор конкатенации + и оператор повторения \* работают со списком так же, как и со строками.

    Рассмотрим следующий пример.

    list1 = [1, "hi", "Python", 2] #Checking type of given list print(type(list1)) #Printing the list1 print (list1) # List slicing print (list1[3:]) # List slicing print (list1[0:2]) # List Concatenation using + operator print (list1 + list1) # List repetation using * operator print (list1 * 3) 
    [1, 'hi', 'Python', 2] [2] [1, 'hi'] [1, 'hi', 'Python', 2, 1, 'hi', 'Python', 2] [1, 'hi', 'Python', 2, 1, 'hi', 'Python', 2, 1, 'hi', 'Python', 2] 
    Кортежи

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

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

    Рассмотрим простой пример кортежа.

    tup = ("hi", "Python", 2) # Checking type of tup print (type(tup)) #Printing the tuple print (tup) # Tuple slicing print (tup[1:]) print (tup[0:1]) # Tuple concatenation using + operator print (tup + tup) # Tuple repatation using * operator print (tup * 3) # Adding value to tup. It will throw an error. t[2] = "hi" 
     ('hi', 'Python', 2) ('Python', 2) ('hi',) ('hi', 'Python', 2, 'hi', 'Python', 2) ('hi', 'Python', 2, 'hi', 'Python', 2, 'hi', 'Python', 2) Traceback (most recent call last): File "main.py", line 14, in t[2] = "hi"; TypeError: 'tuple' object does not support item assignment 
    Словарь

    Словарь (Dictionary) — это неупорядоченный набор элементов, состоящий из пары ключ-значение. Он похож на ассоциативный массив или хэш-таблицу, где каждый ключ хранит определенное значение. Ключ может содержать любой примитивный тип данных, а значение — произвольный объект Python.

    Элементы словаря разделяются запятой , и заключаются в фигурные скобки <> .

    Рассмотрим следующий пример.

    d = # Printing dictionary print (d) # Accesing value using keys print("1st name is "+d[1]) print("2nd name is "+ d[4]) print (d.keys()) print (d.values()) 
    1st name is Jimmy 2nd name is mike dict_keys([1, 2, 3, 4]) dict_values(['Jimmy', 'Alex', 'john', 'mike']) 
    Логический тип

    Тип Boolean предоставляет два встроенных значения, True и False. Эти значения используются для определения истинности или ложности данного утверждения. Они обозначаются классом bool . True может быть представлено любым ненулевым значением или ‘T’ , в то время как false может быть представлено 0 или ‘F’ . Рассмотрим следующий пример.

    # Python program to check the boolean type print(type(True)) print(type(False)) print(false) 
      NameError: name 'false' is not defined 
    Множество (Set)

    Set (Множество) в Python — это неупорядоченная коллекция типа данных. Она итерируема, мутабельна (может изменяться после создания) и имеет уникальные элементы. В set порядок элементов не определен; он может возвращать измененную последовательность элемента. Набор создается с помощью встроенной функции set() , либо последовательность элементов передается в фигурных скобках и разделяется запятой. Он может содержать различные типы значений. Рассмотрим следующий пример.

    # Creating Empty set set1 = set() set2 = #Printing Set value print(set2) # Adding element to the set set2.add(10) print(set2) #Removing element from the set set2.remove(2) print(set2) 

    Типы данных в Python

    Каждая переменная в Python — объект с определенным типом данных. Тип данных — это класс, а переменные являются экземплярами (объектами) этих классов.

    В Python множество различных типов данных, мы поговорим о самых важных из них.

    Числа

    К этому классу относятся: целые, комплексные и числа с плавающей точкой. Определены они в Python так: int , complex и float соответственно.

    С помощью функции type() можно узнать класс, к которому принадлежит переменная. А функция isinstance() проверяет принадлежность объекта к определенному классу.

    a = 5 print(a, "относится к типу", type(a)) a = 2.0 print(a, "относится к типу", type(a)) a = 1+2j print(a, "комплексное число?", isinstance(1+2j,complex)) 

    Вывод:

    5 относится к типу 
    2.0 относится к типу
    (1+2j) комплексное число? True

    Целые числа могут быть любой длины — ограничивает их лишь память вашего компьютера.

    Число с плавающей точкой имеет точность до 15 знаков после запятой. Целая и десятичная части разделяются точками. 1 — целое число, 1.0 — число с плавающей точкой.

    Комплексные числа записываются так: x + yj . Здесь x — действительная часть, а y — мнимая. Несколько примеров:

    >>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0.1234567890123456789 >>> b 0.12345678901234568 >>> c = 1+2j >>> c (1+2j) 

    Обратите внимание, что float-переменная b усекается.

    Списки

    Список — это упорядоченная последовательность элементов. Это наиболее часто используемый тип данных в Python. И это не просто так: список — очень гибкий тип данных. Хотя бы потому, что элементы списка не обязательно должно быть одного типа.

    Объявить список довольно просто — элементы в нем разделяются запятыми и заключены в квадратные скобки [ ] .

    a = [1, 2.2, 'python']

    Чтобы получить элемент или ряд элементов из списка, воспользуйтесь срезами. Индексация начинается с 0.

    a = [5,10,15,20,25,30,35,40] # a[2] = 15 print("a[2] = ", a[2]) # a[0:3] = [5, 10, 15] print("a[0:3] = ", a[0:3]) # a[5:] = [30, 35, 40] print("a[5:] language-python">a = [1, 2, 3] a[2] = 4 print(a) 

    Вывод:

    [1, 2, 4]

    Кортежи

    Кортеж — это упорядоченная последовательность элементов, похожая на список. Единственное отличие — кортежи неизменяемы. После их объявления вы не сможете изменить значения внутри кортежа.

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

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

    t = (5, 'программа', 1+3j) 

    Чтобы извлечь элемент из кортежа, вы можете использовать оператор среза — [] . Но не забывайте — значения кортежа менять нельзя.

    t = (5,'программа', 1+3j) # t[1] = 'программа' print("t[1] = ", t[1]) # t[0:3] = (5, 'программа', (1+3j)) print("t[0:3] test.py", line 11, in  
    t[0] = 10
    TypeError: 'tuple' object does not support item assignment

    Строки

    Строка — последовательность символов Юникода. Для объявления строк можно использовать двойные или одинарные кавычки. Многострочные блоки текста объявляются так — ''' или """ .

    s = "Это строка" print(s) s = '''Многострочная строка''' print(s) 

    Вывод:

    Это строка
    Многострочная
    строка

    Со строками можно использовать срезы, но сами строки изменять нельзя.

    s = 'Привет, мир!' # s[4] = 'е' print("s[4] =", s[4]) # s[8:11] = 'мир' print("s[8:11] ", line 11, in 
    TypeError: 'str' object does not support item assignment

    Множества

    Множество — неупорядоченный набор уникальных элементов. Множество объявляется с помощью фигурных скобок — < >. Элементы внутри множества разделяются запятыми. Элементы в списке не упорядочены.

    a = # вывод элемента множества print("a language-python">a = print(a) 

    Вывод:

    Множества не упорядочены. Оператор среза с ними не работает.

    >>> a = >>> a[1] Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in TypeError: 'set' object does not support indexing 

    Словари

    Словарь — это неупорядоченный набор пар «ключ-значение».

    Обычно словарь используется при работе с большим количеством данных. Словари оптимизированы под извлечение данных. Мы должны знать ключ, чтобы извлечь значение.

    В Python словари объявляются с помощью фигурных скобок — < >. Каждый элемент словаря представляет собой пару в виде ключ:значение . Ключ и значение могут быть любого типа.

    >>> d = >>> type(d)

    Для получения значения мы используем ключ — не наоборот.

    d = print(type(d)) print("d[1] = ", d[1]); print("d['ключ'] = ", d['ключ']); # Ошибка print("d[2] ", line 9, in 
    KeyError: 2

    Приведение типов

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

    >>> float(5) 5.0

    Приведение float к int приведет к усечению — десятичная часть отбросится.

    >>> int(10.6) 10 >>> int(-10.6) -10

    Преобразовывать можно только подходящие под тип данных значения.

    >>> float('2.5') 2.5 >>> str(25) '25' >>> int('1p') Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ValueError: invalid literal for int() with base 10: '1p'

    Также можно преобразовывать одну последовательность в другую.

    >>> set([1,2,3]) >>> tuple() (5, 6, 7) >>> list('привет') ['п', 'р', 'и', 'в', 'е', 'т'] 

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

    >>> dict([[1,2], [3,4]]) >>> dict([(3,26), (4,44)])

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *