Python Cookbook第三版文档学习笔记 1.1

2023-08-28 08:05:06 浏览数 (1)

从今天开始,新开一个系列,我准备把学习Python cookbook这本书的代码自己敲一遍,加深理解和了解Python的库带的一些方法。 因为现实情况,现在很少能有时间看实体书。所以这个系列的学习资料全部参考这个文档。 https://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p01_unpack_sequence_into_separate_variables.html 感谢大佬们的翻译和付出。

以后不出意外的话不知道更新什么,就会更新Python相关的基础知识。

1.1的内容是:将序列分解为单独的变量

  • 一般来说,我们使用下面的方式进行给变量赋值。
代码语言:javascript复制
a = 3
b, c = 4, 5

if __name__ == '__main__':
    print(a, b, c)
#值分别为 3,4,5

假如我们要赋的值在一个列表里,有个列表list1 = [100,200,300] 我想把 300的值赋给d。我想我们肯定会想到 d = list1[2] 这种办法。 那么新的问题来了。我想把这个列表的值分别赋给3个变量a b c。我总不能傻傻的写 a=list[0],b=list[1],c=list[2]吧。

知识点来了:是可迭代对象可以通过一个简单的赋值操作来分解为单独的变量。 前提就是变量的总数和结构必须与可迭代的对象相吻合。

那么在这里,我们可以使用 a,b,c =list1 即可实现需求。

Python里的可迭代对象一般包括:字符串,列表,元组,集合,字典等 ,如果你不确定你的对象是否可迭代。那么可以使用内置方法hasattr 来判断,也可以使用 collections.abc 的 Iterable 来判断是否是可迭代

代码语言:javascript复制
from collections.abc import Iterable
if __name__ == '__main__':
    print(isinstance('abc',Iterable))   #字符串
    print(isinstance([],Iterable))   #列表
    print(isinstance({},Iterable))    #字典
    print(isinstance({1,2,3},Iterable))    #集合
    print(isinstance((1,),Iterable)) #元组

##以上结果均为True

很多时候, 我们可能只需要其中的一个值,这时候如果采用这种方法的话,我们就可以使用一个占位的变量就可以啦。反正 这种_ 变量在业务里不要使用即可。

代码语言:javascript复制
 data = ['张三','lisi','wangwu']
    _,a,_ = data
    print(a) #lisi  
代码语言:javascript复制
  data = ['hello1','hello2','hello3']
    a ,b ,c ,d =data #报错 ValueError: not enough values to unpack (expected 4, got 3)
    a , b = data #报错ValueError: too many values to unpack (expected 2)

不错,学到了!

0 人点赞