@jpp Да, я был неправ, говоря, что это был синтаксический сахар, но редко он будет вести себя заметно иначе, чем если бы он был.

ил кортежи, добавленные в Python3.5:

In [128]: *(x for x in range(5)),
Out[128]: (0, 1, 2, 3, 4)

Тем не менее, когда я пытаюсьreturn понимание кортежа напрямую я получаю ошибку:

In [133]: def testFunc():
     ...:     return *(x for x in range(5)),
     ...: 
  File "<ipython-input-133-e6dd0ba638b7>", line 2
    return *(x for x in range(5)),
           ^
SyntaxError: invalid syntax    

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

In [130]: {idx: *(x for x in range(5)), for idx in range(5)}
  File "<ipython-input-130-3e9a3eee879c>", line 1
    {idx: *(x for x in range(5)), for idx in range(5)}
          ^
SyntaxError: invalid syntax

Я чувствую, что это немного больше проблемы, так как в некоторых ситуациях понимание может быть важно для производительности.

У меня нет проблем с использованием словаря и списков в этих ситуациях. В скольких других ситуациях понимание кортежей не сработает, когда это делают другие? Или, возможно, я использую это неправильно?

Это заставляет меня задуматься, какой смысл был, если его использование настолько ограничено или, возможно, я делаю что-то не так? Если я не делаю что-то не так, то какой самый быстрый / самый питонический способ создать кортеж, который достаточно универсален, чтобы его можно было использовать так же, как списки и словари?

Ответы на вопрос(1)

Ваш ответ на вопрос