|

Monthy Python
Ramhak konung@ic.ru
Xakep, номер #017, стр. 017-026-2
>>> x = 0
>>> x
0
>>> y = 0.666e+10
>>> y
6660000000.0
Строки аналогичны строкам в perl`е, но здесь другая нотация и нет особого различия между одинарной и двойной кавычками. В отличие от perl`а, к строкам можно обращаться как к массивам, получая соответствующий элемент, либо указывая границы - string[begin:end] и получая в ответ подстроку из string, начиная с begin и заканчивая end. Можно не указывать begin или end, тогда (по умолчанию) begin = 0 (нумерация символов в строке идет с нуля), а end = длине строки:
>>> s = 'Zed`s dead, baby. Zed`s dead.'
>>> s[0]
'Z'
>>> s[0:3]
'Zed'
>>> s[:3]
'Zed'
>>> s[18:]
'Zed`s dead.'
Есть еще одна вкусность: параметры begin и end могут быть отрицательны. На хрена отрицательные? Все очень просто: при таком раскладе соответствующие номера отсчитываются с конца строки, что жутко удобно, когда нужен последний элемент или часть строки в конце. Кроме того, строки можно умножать на числа. :) Не совсем так, как в perl`е, но тоже кульно:
>>> s[:-12]
'Zed`s dead, baby.'
>>> s[-1]
'.'
>>> s[-5:-1]
'dead'
>>> s[-5:-1]*10
'deaddeaddeaddeaddead'
Строки также имеют свойство immutable (неизменный - англ.) - то есть, попросту говоря, нельзя изменить какую-либо часть строки. Присвоить вот так нельзя:
>>> s[5] = 'a'
Traceback (innermost last):
File "", line 1, in ?
s[5] = a
TypeError: object doesn't support item assignment
Но умелыми ручками программиста это обходится примерно так:
>>> s[5] = 'a'
Traceback (innermost last):
File "", line 1, in ?
s[0] = a
TypeError: object doesn't support item assignment
>>> s = s[:5] + 'a' + s[6:]
>>> s
'Zed`sadead, baby. Zed`s dead.'
В личной переписке Guido van Rossum сказал, что данное свойство было сделано в силу того, что строки отнесли к атомарным единицам структуры языка (то есть буковкам, цифиркам - всему, что не делится на более мелкие элементы), и что им сначала было в лом переделывать, а потом уже было поздно. :) Лентяи.
Следующий тип данных в списке - списки. :) Это неотъемлемая часть языка с advanced data types (так называют типы данных, которые очень гибки в использовании. Например, безразмерные массивы - сколько нужно, столько и примет, причем без дополнительных объявлений и описаний), коими являются многие ЯП, появившиеся с середины 90-х. Списки по сути дела - массивы. Но, в отличие от массивов в классических ЯП, здешние списки могут содержать элементы различных типов, что чрезвычайно удобно, когда не знаешь, что за данные представил пользователь для анализа/работы (юзера обычно сдают кал на анализ. :) Заводят списки и работают с ними в Python`е так:
>>> a = ['1', 2, '34']
>>> a
['1', 2, '34']
>>> a.append ('Так добавляют в список. Можно еще a.insert(0, string)')
>>> a.remove ('А так удаляют')
>>> a
['1', 2, '34', 'Так добавляют в список']
>>> a.count('34')
1
В Python`е списки обладают дополнительным свойством nested (гнездиться - англ.). Это означает, что можно включать списки в списки (поддерживается функция включения масла в масло (:). То есть "гнездить" их как попало (или как душе угодно):
Назад на стр. 017-026-1 Содержание Вперед на стр. 017-026-3
|