笔记,防丢失忘记
解压序列赋值给多个多个变量
p = (3,4)
x,y = p # 要求p的数量与解压的数量一致. 不能写成,x,y,x = p, 因为P只有3,4两个元素
print(x)
print(y)
# 另外一个例子
data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
name, shares, prices, date = data
print(date)
print(date[1])
print(date[2])
# 上方与下面的返回结果其实是一样的,但形式个人比较喜欢下面一种方式
name2, shares2, prices2, (year,mon,day) = data
print(year)
print(mon)
上面这种方式适用于可迭代对像上面,比如列表,元组,字符串,文件对像,迭代器,生成器等,假如想丢弃不想要的值,直接输入_
就可以。
data2 = [ 'ACME', 50, 91.1, (2012, 12, 21) ]
name2, _, prices2, _ = data2
print(name2)
print(prices2)
解压序列赋值给多个多个变量
主要解决目的:可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError,那么怎么样才能从可迭代对像中解压出N个元素来呢?
def drop_first_last(grades):
first, *middle, last = grades
return sum(middle)
t = (1,2,3,4,5,6)
print(drop_first_last(t))
输出: 14
# 另外一种情况,可能存在某一个字段不确认值的len时可以使用*,比如phone
record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, mail, *phone = record
print(phone) # 输出['773-555-1212', '847-555-1212']
record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212','1232')
print(phone) # 输出 ['773-555-1212', '847-555-1212', '1232']