Wpis z mikrobloga

Sequence assigment (python 2.X oraz 3.X) in #python
a, b, c = 1, 2, 3
[a, b, c] = (1, 2, 3)
# a = 1, b = 2, c = 3

((a, b), c) = ('py, 'th')
# a = 'p', b = 'y' c = 'th'

string = 'word'
a, b = string[0], string[1:]
# a = w, b = 'ord'`

Extended Sequence Unpacking (tylko python 3.X ale można (a raczej trzeba) to zastąpić przez _slicing_ i będzie to zgodne z python 2.X)
seq = [1, 2, 3, 4]
a, b = seq
# ValueError: too many values to unpack (expected 2)

a, b = seq[0], seq[1:] # slicing
a, *b = seq
# a = 1, b = [2, 3, 4]

a, b = seq[:-1], seq[-1] # slicing
*a, b = seq
# a = [1, 2, 3], b = 4

a, *b, c = seq
a = 1, b = [2, 3], c = 4

Uwaga na "specjalne" przypadki

seq = [1, 2, 3]
a , b, *c = seq
# a = 1, b = 2, c = [3] <--

a, b, c, *d = seq
# a = 1, b = 2, c = 3, d = []

#zikenpython
  • Odpowiedz