python序列赋值_Python3序列赋值、序列解包详解(上)

###概述

赋值是各个编程语言通用的概念,而在Python有多种赋值方法以供选择,比如元组、列表、序列赋值运算等,甚至还有扩展的序列解包赋值方法完成更加复杂的赋值运算。

一些基本赋值运算

下面示例介绍了元组赋值运算、列表赋值运算及任意对象的序列赋值的简单使用

# 元组赋值运算

one, two, three = (1, 2, 3)

print(one, two, three)

# 列表赋值运算

one, two, three = [1, 2, 3]

print(one, two, three)

one = 1

two = 2

# 简单序列赋值赋值

A, B = one, two

print(A, B)

# 将元组中的值赋值给列表

[a, b, c] = (A, B, C)

print([a, b, c])

示例结果:

1 2 3

1 2 3

1 2

[A, B, C]

从示例我们看到,右侧实际上支持任意可迭代的对象,但前提是右侧对象内的元素个数需要与左侧对应相等,比如将右侧元组的值赋值左侧的列表中。

高级序列赋值元素

前面我们提到序列赋值的元素条件之一就是等号两边的元素数量需要相等,但是在Python3中我们可以利用更加实用的扩展解包的方法,当然我们也可以利用其它的方式解决,比如利用切片解决一些元素不相等的情形。

S = STR

a, b, c = S

print(a, b, c)

# 利用切片解决两边元素不相等的情形

S = PYTHON

a, b, c = S[0], S[1], S[2:]

print(a, b, c)

# 嵌套赋值

(a, b), c = S[:2], S[2:]

print((a, b), c)

示例结果:

(S, T, R)

(P, Y, THON)

((P, Y), THON)

可以看到我们甚至可以利用切片进行嵌套赋值,完成更加复杂赋值运算。

经验分享 程序员 微信小程序 职场和发展