python有许多特性,可以让代码更加简洁,今天来写一写,解压序列赋值,希望对初学PYTHON的小伙伴们有所帮助!
在此之前我们先看一看python的其他赋值方法。
a = 1
b = 2
a, b = 3, 4
a, b = b, a
a = 10 if b == 3 else 5
#放飞自我的各种赋值方式
下面进入正题,解压序列赋值操作:
datas = [ '李白', 180, 100, (2012, 12, 21) ]
name, height, weight, dates = datas #结果大家应该都知道了
#不过你还可以这样
name, height, weight, (year, month, day) = datas #结果也很明显
#字符串也是序列的一种啊所以也可以解压
s = 'Hello'
a, b, c, d, e = s
#我们还可以只解压一部分其他的不要
_, a, b, _, c = s #你必须保证占位的变量名没在其他地方使用到
需要注意的是,你的变量数量必须与序列的数量相等,否则会报错,但是如果我不知道序列的元素数量就不能解压了嘛,当然不是。
datas = [ '李白', 180, 100, (2012, 12, 21) ]
#加入我不知道datas序列一共有多少元素,但我知道第一个是名字,你就可以这样
name, *other = datas #这样第一个元素就会被赋值,其他元素将成为一个列表赋值给other
name, *other ,dates = datas
提问:那如果只有一个变量的序列a, *b = [1,]会发生什么情况呢?这就需要你去试试啦!!
再问: 如果是a, *b = ‘M’ 会怎么样呢?
你会发现一件事情,*b的结果b总是返回一个列表。
#语句里也可以实用解压赋值操作
#例如你有一个二元列表,datas
for i, *k in datas:
'''此处省略'''
其实很多看似简单的语法,往往能很大程度上简化我们的代码,你觉得你记住了,可是往往用的时候想不起来,所以你需要的是在能用到这种方法的时候,想起他。以及这种方法的限制,和优点,不要觉得简单就一掠而过,弄懂弄透才是王道。没有一种语言能通吃天下,但是你必须透彻的去理解某一门语言,什么都想学的结果就是样样通,样样松,毫无优势可言。如果你看到这里,并且还亲自的尝试了,那么恭喜你,你的耐心值得称赞。