Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Списки в логическом контексте. Кортежи. Кортежи в логическом контексте




Списки в логическом контексте

Пустые списки — ложь, все остальные — истина.

Вы также можете использовать список в логическом контексте, например, в операторе if:

> > > def is_it_true(anything):
... if anything:
... print(" да, это истина" )
... else:
... print(" нет, это ложь" )
...
> > > is_it_true([]) ①
нет, это ложь
> > > is_it_true(['a']) ②
да, это истина
> > > is_it_true([False]) ③
да, это истина

В логическом контексте пустой список — ложь.
Любой список, состоящий хотя бы из одного элемента, — истина.
Любой список, состоящий хотя бы из одного элемента, — истина. Значения элементов не важны.

Кортежи

Кортеж — это неизменяемый список. Кортеж не может быть изменён никаким способом после его создания.

> > > a_tuple = (" a", " b", " mpilgrim", " z", " example" ) ①
> > > a_tuple
('a', 'b', 'mpilgrim', 'z', 'example')
> > > a_tuple[0] ②
'a'
> > > a_tuple[-1] ③
'example'
> > > a_tuple[1: 3] ④
('b', 'mpilgrim')

Кортеж определяется так же, как список, за исключением того, что набор элементов заключается в круглые скобки, а не в квадратные.
Элементы кортежа заданы в определённом порядке, как и в списке. Элементы кортежа индексируются с нуля, как и элементы списка, таким образом первый элемент не пустого кортежа — это всегда a_tuple[0].
Отрицательные значения индекса отсчитываются от конца кортежа, как и в списке.
Создание среза кортежа («slicing») аналогично созданию среза списка. Когда создаётся срез списка, получается новый список; когда создаётся срез кортежа, получается новый кортеж.

Основное отличие между кортежами и списками состоит в том, что кортежи не могут быть изменены. Говоря техническим языком, кортеж — неизменяемый объект. На практике это означает, что у них нет методов, которые бы позволили их изменить. У списков есть такие методы, как append(), extend(), insert(), remove(), и pop(). У кортежей ни одного из этих методов нет. Можно взять срез от кортежа (так как при этом создастся новый кортеж), можно проверить, содержит ли кортеж элемент с конкретным значением (так как это действие не изменит кортеж), и... собственно, всё.

# продолжение предыдущего примера
> > > a_tuple
('a', 'b', 'mpilgrim', 'z', 'example')
> > > a_tuple. append(" new" ) ①
Traceback (innermost last):
File " < interactive input> ", line 1, in?
AttributeError: 'tuple' object has no attribute 'append'
> > > a_tuple. remove(" z" ) ②
Traceback (innermost last):
File " < interactive input> ", line 1, in?
AttributeError: 'tuple' object has no attribute 'remove'
> > > a_tuple. index(" example" ) ③
4
> > > " z" in a_tuple ④
True

Перевод сообщений оболочки:

Раскрутка стека (от внешних к внутренним):

Файл " < интерактивный ввод> ", строка 1, позиция?

AttributeError: у объекта 'tuple' нет атрибута '< атрибут> '

Вы не можете добавить элементы к кортежу. Кортежи не имеют методов append() или extend().
Вы не можете удалять элементы из кортежа. Кортежи не имеют методов remove() или pop().
Вы можете искать элементы в кортежи, поскольку это не изменяет кортеж.
Вы также можете использовать оператор in, чтобы проверить существует ли элемент в кортеже.

Так где же могут пригодиться кортежи?

  • Кортежи быстрее, чем списки. Если вы определяете неизменяемый набор значений и всё, что вы собираетесь с ним делать — итерировать по нему, используйте кортеж вместо списка.
  • Кортежи делают код безопаснее в том случае, если у вас есть «защищенные от записи» данные, которые не должны изменяться. Использование кортежей вместо списков избавит вас от необходимости использовать оператор assert, дающий понять, что данные неизменяемы, и что нужно приложить особые усилия (и особую функцию), чтобы это обойти.
  • Некоторые кортежи могут использоваться в качестве ключей словаря (конкретно, кортежи, содержащие неизменяемые значения, например, строки, числа и другие кортежи). Списки никогда не могут использоваться в качестве ключей словаря, потому что списки — изменяемые объекты.
Кортежи могут быть преобразованы в списки и наоборот. Встроенная функция tuple() принимает список и возвращает кортеж из всех его элементов, функция list() принимает кортеж и возвращает список. По сути дела, tuple() замораживает список, а list() размораживает кортеж.

Кортежи в логическом контексте

Вы можете использовать кортежи в логическом контексте, например, в операторе if.

> > > def is_it_true(anything):
... if anything:
... print(" да, это истина" )
... else:
... print(" нет, это ложь" )
...
> > > is_it_true(()) ①
нет, это ложь
> > > is_it_true(('a', 'b')) ②
да, это истина
> > > is_it_true((False, )) ③
да, это истина
> > > type((False)) ④
< class 'bool'>
> > > type((False, ))
< class 'tuple'>

В логическом контексте пустой кортеж является ложью.
Любой кортеж состоящий по крайней мере из одного элемента — истина.
Любой кортеж состоящий по крайней мере из одного элемента — истина. Значения элементов не важны. Но что делает здесь эта запятая?
Чтобы создать кортеж из одного элемента, необходимо после него поставить запятую. Без запятой Python предполагает, что вы просто добавили еще одну пару скобок, что не делает ничего плохого, но и не создает кортеж.
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...