В какой версии Python был установлен добавленный синтаксис инициализации - PullRequest
3 голосов
/ 23 октября 2009

Я только сегодня заметил эту функцию!

s={1,2,3} #Set initialisation
t={x for x in s if x!=3} #Set comprehension
t=={1,2}

В какой версии? Я также заметил, что это установило понимание. Было ли это добавлено в той же версии?

Ресурсы

Ответы [ 3 ]

11 голосов
/ 23 октября 2009

Модуль sets был добавлен в Python 2.3, но встроенный тип набора был добавлен в язык 2.4, по сути, с тем же интерфейсом. (Начиная с версии 2.6, модуль sets устарел.)

Таким образом, вы можете использовать наборы еще до 2.3, если вы

import sets

Но вы получите DeprecationWarning, если попытаетесь выполнить импорт в 2.6

Установить понимание и установить буквальный синтаксис - то есть способность сказать

a = { 1, 2, 3 }

являются новыми в Python 3.0. Чтобы быть очень точным, набор литералов и набор пониманий присутствовали в Python 3.0a1, первом публичном выпуске Python 3.0, начиная с 2007 года. Замечания к выпуску Python 3

Понимания и литералы были позже реализованы в 2.7. 3.x Функции Python, включенные в 2.7

0 голосов
/ 13 января 2010

Синтаксис set literal, set и dict compthition был перенесен в транк 2.x, 2-3 дня назад. Поэтому я думаю, что эта функция должна быть доступна в Python 2.7.

0 голосов
/ 23 октября 2009

Ну, тестируем это:

>>> s = {1, 2, 3}
  File "<stdin>", line 1
    s = {1, 2, 3}
          ^
SyntaxError: invalid syntax

У меня работает 2.5, поэтому я предполагаю, что этот синтаксис был добавлен когда-то в 2.6 (Обновление: фактически добавлено в 3.0, но Ян победил меня). Я, наверное, скоро обновлюсь. Я рад, что они добавили синтаксис для этого - я довольно устал от set([1, 2, 3]).

Понимание множеств, вероятно, существует с тех пор, как множества были созданы впервые. Сайт документации Python не очень понятен, но я не думаю, что наборы были бы слишком полезны без итераторов.

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