Все типы данных в Python
Основные типы данных в Python
Как определить тип данных переменной в Python?
Основным способом является встроенная функция type(). Она возвращает объект типа, а для сравнения типов рекомендуется использовать isinstance(), которая учитывает наследование.
x = 42
print(type(x)) # <class 'int'>
print(isinstance(x, int)) # True
что делает strip в python (метод strip() в python)
Такой подход подходит для большинства ситуаций, когда нужно проверить или получить тип.
В качестве альтернативы можно обратиться к атрибуту __class__ объекта или использовать модуль typing для статической проверки. Например:
x = 3.14
print(x.__class__) # <class 'float'>
from typing import get_type_hints
математические примеры python (математические примеры в python)
Однако прямой доступ к __class__ считается менее предпочтительным, так как он нарушает инкапсуляцию.
Типичная ошибка: сравнение типа через type(x) == int не работает для подклассов. Если класс наследуется от int, такая проверка вернет False, в то время как isinstance(x, int) вернет True. Решение - всегда использовать isinstance.
Как работают числовые типы int, float и complex?
В Python есть три встроенных числовых типа: целые числа (int), числа с плавающей запятой (float) и комплексные числа (complex). Целые числа имеют неограниченную точность. Примеры:
a = 10 # int
b = 3.14 # float
c = 2 + 3j # complex
print(a + b) # 13.14
print(c.real, c.imag) # 2.0 3.0
новые возможности условного оператора python (новые возможности условного оператора в python)
Для работы с дробями высокой точности можно использовать модуль decimal.Decimal, а для рациональных чисел - fractions.Fraction:
from decimal import Decimal
from fractions import Fraction
d = Decimal('0.1') + Decimal('0.2') # 0.3, а не 0.30000000000000004
f = Fraction(1, 3) + Fraction(1, 6) # 1/2
Float python пример (примеры float в python)
Типичная ошибка: сложение int и str вызывает TypeError. Также арифметика с float может давать неожиданные округления из-за двоичного представления. Решение - использовать Decimal для финансовых расчетов и явно преобразовывать типы.
Как использовать строки и их методы?
Строки (str) - неизменяемый тип. Они поддерживают множество методов: lower(), upper(), split(), join() и другие. Создание строк:
s = 'Hello, world!'
print(s.upper()) # HELLO, WORLD!
print(s.split(',')) # ['Hello', ' world!']
print(' - '.join(['a','b'])) # a - b
Python кортежи примеры (примеры кортежей в python)
Другие способы форматирования: f-строки (рекомендуются), метод format() и оператор %. Пример:
name = 'Alice'
age = 30
print(f'Имя: {name}, Возраст: {age}')
print('Имя: {}, Возраст: {}'.format(name, age))
print('Имя: %s, Возраст: %d' % (name, age))
словарь в python пример (примеры словарей в python)
Типичная ошибка: попытка изменить строку по индексу (например, s[0] = 'H') вызывает TypeError. Для изменения строки нужно создать новую. Также следует избегать конкатенации в цикле - лучше использовать список и join.
Какие бывают коллекции: list, tuple, set, dict?
Список (list) - изменяемая упорядоченная коллекция. Кортеж (tuple) - неизменяемый упорядоченный. Множество (set) - неупорядоченная коллекция уникальных элементов. Словарь (dict) - отображение ключ-значение. Примеры:
lst = [1, 2, 3]
tup = (1, 2, 3)
st = {1, 2, 3}
dct = {'a': 1, 'b': 2}
print(lst[0], tup[1], st, dct['a'])
является ли число четным python (проверка числа на четность в python)
Альтернативные конструкции: списковые включения ([x**2 for x in range(5)]), кортежи без скобок, frozenset (неизменяемое множество), словарные включения. Пример:
squares = [x**2 for x in range(5)] # [0,1,4,9,16]
fs = frozenset([1,2,3]) # frozenset({1,2,3})
dct2 = {k: k*2 for k in range(3)} # {0:0, 1:2, 2:4}
типы данных в python с примерами (типы данных в python с примерами)
Типичные ошибки: использование кортежа как ключа словаря возможно только если все элементы кортежа хэшируемы. Множество не может содержать изменяемые объекты (например, список). При неявном сравнении == у списков и кортежей учитывается порядок, у множеств - нет. Решение - тщательно выбирать тип коллекции под задачу.
Что такое булевый тип и None?
Тип bool имеет два значения: True и False. Логические операторы: and, or, not. Тип None (единственный объект NoneType) обозначает отсутствие значения. Примеры:
flag = True
print(flag and False) # False
print(not flag) # False
x = None
print(x is None) # True
множественный выбор python (множественный выбор (if-elif-else) в python)
Любой объект может быть проверен на истинность в логическом контексте. Пустые коллекции, нули, None - ложны; остальные - истинны. Функция bool() преобразует объект в булево значение.
print(bool(0), bool(1), bool(''), bool('abc')) # False True False True
Типичная ошибка: сравнение с None через == может работать некорректно для некоторых классов, переопределяющих __eq__. Всегда используйте is None или is not None. Также путаница между False и None - это разные объекты.
Расширенные примеры работы с типами данных
Ниже приведены примеры, демонстрирующие неочевидные возможности и комбинации типов.
Пример 1: Использование memoryview для работы с bytes
data = b'Hello'
mv = memoryview(data)
print(mv[0]) # 72 (код символа 'H')
mv[0] = 74 # Ошибка: memoryview неизменяемого bytes
Ошибка: TypeError: cannot modify read-only memory. Но если использовать bytearray:
data = bytearray(b'Hello')
mv = memoryview(data)
mv[0] = 74
print(data) # b'Jello'
b'Jello'
Пример 2: Распаковка и объединение словарей
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'a': 10}
merged = {**d1, **d2}
print(merged) # {'a': 10, 'b': 2, 'c': 3}
{'a': 10, 'b': 2, 'c': 3}
Пример 3: Преобразование списка кортежей в словарь
pairs = [('x', 1), ('y', 2), ('z', 3)]
d = dict(pairs)
print(d) # {'x': 1, 'y': 2, 'z': 3}
{'x': 1, 'y': 2, 'z': 3}
Пример 4: Использование frozenset в качестве ключа словаря
key = frozenset([1, 2, 3])
d = {key: 'value'}
print(d) # {frozenset({1, 2, 3}): 'value'}
{frozenset({1, 2, 3}): 'value'}
Пример 5: Генерация чисел Фибоначчи с помощью спискового включения
fib = [0, 1]
[fib.append(fib[-1] + fib[-2]) for _ in range(8)]
print(fib) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Пример 6: Применение Decimal для точных денежных расчетов
from decimal import Decimal, getcontext
getcontext().prec = 4
a = Decimal('1.234')
b = Decimal('5.678')
c = a + b
print(c) # 6.912
6.912