Почему распаковка `* a, b = что-то` делает `a` всегда` list` типом? - PullRequest
0 голосов
/ 02 июля 2019

Я только что тестировал с распаковкой,

И я понял:

*a, b = {1, 2, 3}

Делает a list, а не set.

С этим как:

[1, 2]

И я попробовал:

*a, = {1, 2, 3}

Ожидается set, но он все равно становится list как:

[1, 2, 3]

И даже с кортежами:

*a, = (1, 2, 3)

Он делает то же самое list, что и set.

Мне это почему-то не кажется правильным, я думаю, что это специально.

1 Ответ

4 голосов
/ 02 июля 2019

Обсуждались возможные изменения:

[...]

Попробуйте присвоить помеченной цели тот же тип, что и для итерируемого источника, например, b в a, *b = 'hello' будет присвоена строка 'ello'. Это может показаться хорошим, но это невозможно сделать правильно последовательно с все повторяемы.

Источник: https://www.python.org/dev/peps/pep-3132/

...