python cookbook 读书笔记

笔记,防丢失忘记

解压序列赋值给多个多个变量

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']

总结: 当解压可迭代元素不确认时, 可以先考虑*号是否能够满足自己的需求, 假如能,那么是首选,假如不能,再考虑其它方法呀~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。