Б41 Чистый Python. Тонкости программирования для профи. Спб.: Питер



Download 6,94 Mb.
Pdf ko'rish
bet51/80
Sana24.02.2022
Hajmi6,94 Mb.
#212875
1   ...   47   48   49   50   51   52   53   54   ...   80
Bog'liq
978544610803 Chisty Python Tonko

'один' 
# Списки имеют хороший метод repr: 
>>> arr
['один', 'два', 'три'] 
# Списки могут изменяться: 
>>> arr[1] = 'привет' 
>>> arr 
['один', 'привет', 'три'] 
>>> del arr[1] 
>>> arr 
['один', 'три'] 
# Списки могут содержать произвольные типы данных: 
>>> arr.append(23) 
>>> arr 
['один', 'три', 23]
tuple — неизменяемые контейнеры
Аналогично спискам, кортежи тоже являются составной частью ядра 
языка Python
1
. Однако в отличие от списков, в Python объекты-кортежи 
1
См. документацию Python «tuple»: 
https://docs .python .org/3/tutorial/datastructures .
html#tuples-and-sequences


164 Глава 5 • Общие структуры данных Python
не изменяются. Это означает, что элементы не могут динамически добав-
ляться или удаляться — все элементы в кортеже должны быть определены 
во время создания.
Точно так же, как и списки, кортежи могут содержать элементы произ-
вольных типов данных. В этой гибкости много мощности, но, опять-таки, 
это также означает, что данные упакованы менее плотно, чем это было бы 
в типизированном массиве.
>>> arr = 'один', 'два', 'три' 
>>> arr[0] 
'one' 
# Кортежи имеют хороший метод repr: 
>>> arr ('один', 'два', 'три')
# Кортежи не могут изменяться: 
>>> arr[1] = 'привет' 
TypeError: 
"'tuple' object does not support item assignment" 
>>> del arr[1] 
TypeError: 
"'tuple' object doesn't support item deletion" 
# Кортежи могут содержать произвольные типы данных: 
# (При добавлении элементов создается копия кортежа) 
>>> arr + (23,) 
('один', 'два', 'три', 23) 
array .array — элементарные типизированные массивы
Модуль Python 
array
обеспечивает пространственно-эффективное хра-
нение элементарных типов данных в стиле языка C, таких как байты, 
32-разрядные целые числа, числа с плавающей точкой и т. д.
Массивы, создаваемые на основе класса 
array.array
, могут изменяться 
и ведут себя аналогично спискам, за исключением одного важного раз-
личия — они являются «типизированными массивами», ограниченными 
единственным типом данных
1
.
1
См. документацию Python «array.array»: 
https://docs .python .org/3/library/array .html


5 .2 . Массивоподобные структуры данных 165
Из-за этого ограничения объекты 
array.array
со многими элементами 
более пространственно эффективны, чем списки и кортежи. Хранящиеся 
в них элементы плотно упакованы, и это может быть полезно, если вам 
нужно хранить много элементов одного и того же типа.
Кроме того, массивы поддерживают многие из тех же методов, что и у 
обычных списков, и вы можете их использовать в качестве «прямой за-
мены» без необходимости вносить в свой код другие изменения.
>>> import array 
>>> arr = array.array('f', (1.0, 1.5, 2.0, 2.5))
>>> arr[1] 
1.5 
# Массивы имеют хороший метод repr: 
>>> arr 
array('f', [1.0, 1.5, 2.0, 2.5]) 
# Массивы могут изменяться: 
>>> arr[1] = 23.0 
>>> arr 
array('f', [1.0, 23.0, 2.0, 2.5]) 
>>> del arr[1] 
>>> arr 
array('f', [1.0, 2.0, 2.5]) 
>>> arr.append(42.0) 
>>> arr 
array('f', [1.0, 2.0, 2.5, 42.0]) 
# Массивы — это "типизированные" структуры данных: 
>>> arr[1] = 'привет' 
TypeError: "must be real number, not str"
str — неизменяемые массивы символов Юникода
В Python 3.x объекты строкового типа 
str
используются для хранения 
текстовых данных в виде неизменяемых последовательностей символов 
Юникода
1
. В сущности, это означает, что тип 
str
представляет собой 
1
См. документацию Python «str»: 
https://docs .python .org/3 .6/library/stdtypes .html#text-
sequence-type-str


166 Глава 5 • Общие структуры данных Python
неизменяемый массив символов. Как это ни странно, но тип 
str
также 
является рекурсивной структурой данных: каждый символ в строке сам 
является объектом 
str
длиной, равной 
1
.
Строковые объекты пространственно эффективны, потому что они плотно 
упакованы и специализируются на одном-единственном типе данных. 
Если вы храните текст в кодировке Юникод, то лучше использовать этот 
тип данных. Поскольку строки в Python не могут изменяться, модифи-
кация строкового значения требует создания модифицированной копии. 
Самым близким эквивалентом «изменяющейся последовательности 
символов» будет список, в котором символы хранятся по отдельности.
>>> arr = 'abcd' 
>>> arr[1] 

Download 6,94 Mb.

Do'stlaringiz bilan baham:
1   ...   47   48   49   50   51   52   53   54   ...   80




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish