Каков правильный синтаксис для a, b = (1, 2, 3, ...)? - PullRequest
1 голос
/ 29 марта 2020

Я хочу сделать что-то вроде этого:

a, b, = (1, 2, 3, 4, 5, ..., n)
# a = 1
# b = 2

Возможно ли это в Python 3?

Ответы [ 3 ]

7 голосов
/ 29 марта 2020

Как указано в PEP 3132 , поскольку Python 3, вы можете использовать третью переменную для сбора остальных:

a, b, *_ = (1, 2, 3, 4, 5)

print(a, b)
# 1 2

print(_)
# [3, 4, 5]
0 голосов
/ 29 марта 2020

Решение:

# Input data: seq => tuple 
seq = (1, 2, 3, 4, 5)

# Store a list of letters between a-z up the same length as the sequence: letter_list => list
letter_list = list(map(chr, range(ord('a'), ord('z')+1)))[0:len(seq)]

# Iterate through each element in the letter list storing the letter 
# as variable in the global env: letter_list => var
for n, val in enumerate(letter_list):
    globals()[val] = seq[n]

# Print variables to console: stdout
print(a, b, c, d, e)
0 голосов
/ 29 марта 2020

В Python 3.0 оператор * был добавлен в синтаксис множественного назначения, что позволяет нам захватывать оставшиеся элементы после распаковки в список:

>>> numbers = (1, 2, 3, 4, 5, 6)
>>> first, *rest = numbers
>>> rest
[2, 3, 4, 5, 6]
>>> first
1
...