Как я могу распаковать последовательность? - PullRequest
0 голосов
/ 02 мая 2018

Почему я не могу сделать это:

d = [x for x in range(7)] 
a, b, c, d, e, f, g = *d

Где можно распаковать? Только в скобках функции?

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вам не нужно *

>>> z = [x for x in range(7)]
>>> a,b,c,d,e,f,g = z
>>> a
0
>>> b
1
>>> c
2
>>> 

(я использовал z, а не d дважды.)

0 голосов
/ 02 мая 2018

Вы также можете использовать это:

>>> a,b,c,d,e,f,g = range(7)
>>> a
0
>>> b
1
>>> c
2
0 голосов
/ 02 мая 2018

Вы используете Extended Iterable Unpacking неправильно.

d = [x for x in range(7)]  
a, b, c, d, e, f, g = d
print(a, b, c, d, e, f, g)

Где можно распаковать? Только в скобках функции?

Нет,

* предлагает изменить итеративный синтаксис распаковки, позволяя указать «универсальное» имя, которому будет присвоен список всех элементов, не назначенных «обычному» имени.

Вы можете попробовать что-то вроде этого:

a, *params = d
print(params)

выход

[1, 2, 3, 4, 5, 6]

Обычно оператор * ( Extended Iterable Unpacking ) используется, когда вам нужно передать параметры в функцию.

Примечание

Javascript-эквивалент Расширенная итеративная распаковка operator называется синтаксис распространения .

d = [...Array(7).keys()]
console.log(d)

var [a, ...b] = d
console.log(a,b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...