前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python Cookbook第三版文档学习笔记 1.1

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

作者头像
huolong
发布2023-08-28 08:05:06
1500
发布2023-08-28 08:05:06
举报
文章被收录于专栏:技术指北

从今天开始,新开一个系列,我准备把学习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)

不错,学到了!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年08月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档