博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于解构
阅读量:6446 次
发布时间:2019-06-23

本文共 1401 字,大约阅读时间需要 4 分钟。

引例:用一行代码实现交换a,b的值

a = 18

b = 7
a,b = b,a #写法一:解构(其实它就是tuple的拆包)
print(a,b) #7 18
a,b = (b,a) #写法二:普通元组形式的拆包(只要是将可迭代对象分别赋值出去,就叫解构)
print(a,b) #7 18

小知识:n个元素(元素可以是任意数据类型)之间用逗号隔开,就是个tuple,只不过不具备tuple的格式而已.见到他,计算机会自动对其进行封装,封装成1个元组

eg:

(1,2,3) 普通元组

1,2,3 也是个元组
1,[22,"太白",88,666],True,17 也是个元组 #元素可任意,只要是n个元素罗列起来,再用逗号隔开,就是元组

元组的拆包(元组的解构): 即分别赋值,一一对应(即将元组拆开,分别把值赋出去)

a,b = (1,666)

print(a,b) #1 666
a,b,c = (1,666,12)
print(a,b,c) #1 666 12 #元组里元素个数任意,但要与被赋值的对象个数相等

关于解构:

1.等号左边是变量,右边是可迭代对象;若右边是n个变量,逗号隔开,则计算机将其默认为元组(计算机会先将其封装成元# 组,再解构)

2.等号右边的可迭代对象的元素个数必须与等号左边的变量个数相等,且2者一一对应

3.解构-改变的只是指向,没有重新开辟新的内存空间

a = 1

b = 2

print("is a",id(a)) #is a 1892117520

print("is b",id(b)) #is b 1892117552

a,b = b,a

print("is a",id(a)) #is b 1892117552

print("is b",id(b)) #is b 1892117520

例子:

(1).凡是可迭代对象,都可进行解构

a,b,c = "112" #str里的元素个数必须与等号左边的变量数相等

print(a,b,c) #1 1 2

a,b = ("1","2") #tuple的解构-又叫元组的拆包

print(a,b) #1 2

a,b = ["4","5"] #list的解构

print(a,b)

a,b = {"a":1,"b":2,}

print(a,b) #a b #字典的拆包,赋值过去的只是dic的键(因为for dic时,只是循环的字典的键)

a,b = (1,2,) #set的解构

print(a,b)

(2).可获取任意的变量个数的值,不想要的值可用_代替;只打印想要的这些值

写法一:

a,_,c = "你好啊"

print(a,c) #你 啊 #只打印a,c

写法二:

a,b,c = "你好啊"

print(a,c) #你 啊 #只打印a,c

具体实例:

items() #字典

遍历dict中的键值对:

for key,value in dic.items(): # key,value是解构,将小元组里的键和值直接解构出来

print(key,value) #打印的也是2个

for i in dic.items():

print(i) #错:打印出来是元组形式的(键:值),未对其进行解构

转载于:https://www.cnblogs.com/wanshizidiao/p/11020166.html

你可能感兴趣的文章
tp5实现多数据库查询
查看>>
tp5操作mongo
查看>>
scrollView 刷新显示在中间的问题
查看>>
tomcat配置301重定向
查看>>
Spring组件扫描<context:component-scan/>使用详解
查看>>
Orchard模块开发全接触4:深度改造前台
查看>>
如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
查看>>
Jetbrains Idea连接TFS时配置的坑
查看>>
MYSQL 中的GROUP BY 的方式 (1)(loose index scan松散扫描 tight index scan紧凑扫描)
查看>>
论文格式注意事项
查看>>
英山往事之健康第一
查看>>
复旦大学游记
查看>>
linux删除文件未释放空间问题处理
查看>>
[20151208]关于Oracle Row Lock.txt
查看>>
JavaScript中的分号插入机制
查看>>
SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)
查看>>
[20160921]linux下建立samba服务器.txt
查看>>
在线教育解决方案——亿网软通“互联网+”解决方案助力教育企业
查看>>
VSTO学习笔记(五)批量编辑Excel 2010 x64
查看>>
即时编译和打包您的 Groovy 脚本(转)
查看>>