Как называется эта конструкция в python: (x, y) - PullRequest
5 голосов
/ 21 августа 2009

Как это называется в python:

[('/', MainPage)]

Является ли это массивом из ... одного словаря?

Это

()

Кортеж? (или как они это называют?)

Ответы [ 9 ]

14 голосов
/ 21 августа 2009

Это список с одним кортежем.

6 голосов
/ 22 августа 2009

Поскольку никто еще не ответил на этот бит:

Кортеж? (или как они это называют?)

Слово «кортеж» происходит от математики. В математике мы можем говорить о (упорядоченных) парах, если мы делаем 2d геометрию. Переход к трем измерениям означает, что нам нужны тройки. В более высоких измерениях нам нужны четверки, пятерки и, ну, любой префикс для шести и так далее. Это начинает становиться проблемой, и математики также любят обобщать («давайте работать в n измерениях сегодня!»), Поэтому они начали использовать термин «n-кортеж» для упорядоченного списка из n вещей (обычно чисел).

После этого немного естественной лени - все, что вам нужно, чтобы отбросить "n-", и мы получим кортежи.

3 голосов
/ 21 августа 2009

Обратите внимание, что это:

("is not a tuple")

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

"is a tuple",

из-за запятой в конце. Скобки просто принудительно группируют (опять же, за исключением случая кортежа нулевой длины.

2 голосов
/ 21 августа 2009

Это список кортежей.

Это список целых чисел: [1, 2, 3, 4, 5]

Это также список целых чисел: [1]

Это кортеж (строка, целое число): ("hello world", 42)

Это список (строка, целое число) кортежей: [("a", 1), ("b", 2), ("c", 3)]

И вот так: [("a", 1)]

В Python нет большой разницы между списками и кортежами. Тем не менее, они концептуально разные. Простой способ представить это состоит в том, что список содержит множество элементов одного типа (однородных), а кортеж содержит фиксированное количество элементов различных типов (разнородных). Простой способ запомнить это - списки могут быть добавлены, а кортежи - нет, потому что добавление в список имеет смысл, а добавление в кортеж - нет.

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

1 голос
/ 21 августа 2009

Это список кортежей. Вы можете проверить это по

x=[('/', MainPage)]
print type(x) # You will find a <list> type here
print type(x[0]) # You will find a <tuple> type here

Вы можете создать словарь из структуры такого типа (может быть более кортежем в списке) с помощью этого кода

my_dict = dict(x) # x=[('/',MainPage)]
1 голос
/ 21 августа 2009
[('/', MainPage)]

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

()

Это кортеж с нулевым элементом.

1 голос
/ 21 августа 2009

Да, это кортеж .

Они выглядят так:

()
(foo,)
(foo, bar)
(foo, bar, baz)

и т.д.

0 голосов
/ 15 ноября 2009

Это список только из одного кортежа . Этот кортеж имеет два элемента: строку и объект MainPage, чем бы он ни был.

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

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

Например, мы можем определить список и кортеж:

>>> L = ['a', 1, 5, 'b']
>>> T = ('a', 1, 5, 'b')

мы можем изменить элементы L, просто присвоив им новое значение

>>> print L
['a', 1, 5, 'b']
>>> L[1] = 'c'
>>> print L
['a', 'c', 5, 'b']

Это неверно для кортежей

>>> print T
('a', 1, 5, 'b')
>>> T[1] = 'c'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

Это потому, что они неизменны. Элементы кортежей могут быть изменяемыми, и вы можете изменить их, например:

>>> T = (3, ['a', 1, 2], 'lol')
>>> T[1]
['a', 1, 2]
>>> T[1][0] = 'b'
>>> T
(3, ['b', 1, 2], 'lol')

но список, который мы редактировали, все тот же объект, мы не заменили элемент кортежа.

0 голосов
/ 21 августа 2009

Это список кортежей, содержащих один кортеж.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...