Я хочу сделать что-то вроде этого:
a, b, = (1, 2, 3, 4, 5, ..., n)
# a = 1 # b = 2
Возможно ли это в Python 3?
Как указано в PEP 3132 , поскольку Python 3, вы можете использовать третью переменную для сбора остальных:
a, b, *_ = (1, 2, 3, 4, 5) print(a, b) # 1 2 print(_) # [3, 4, 5]
Решение:
# 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)
В Python 3.0 оператор * был добавлен в синтаксис множественного назначения, что позволяет нам захватывать оставшиеся элементы после распаковки в список:
>>> numbers = (1, 2, 3, 4, 5, 6) >>> first, *rest = numbers >>> rest [2, 3, 4, 5, 6] >>> first 1