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

本文共 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

你可能感兴趣的文章
js设计模式 --- 装饰设计模式
查看>>
Flask源代码阅读笔记(一)——应用启动
查看>>
IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏
查看>>
setState的一个Synthetic Event Warning
查看>>
通读Python官方文档之wsgiref(未完成)
查看>>
2017回顾
查看>>
Maven3 快速入门
查看>>
《编写可读代码的艺术》——表面层次的改进
查看>>
RxJS Observable - 一个奇特的函数
查看>>
大型WEB架构设计
查看>>
小程序TAB列表切换内容动态变化,scrollview高度根据内容动态获取
查看>>
swoole_table 实现原理剖析
查看>>
你需要知道面试中的10个JavaScript概念
查看>>
TiDB RC4 Release
查看>>
阿里云有对手了!CDN横评:腾讯云优势明显
查看>>
Ajax常用方法
查看>>
Glide 简单流程分析
查看>>
Hmily 2.0.3 发布,高性能异步分布式事务 TCC 框架
查看>>
烟花年下岁月
查看>>
Java源码阅读之HashMap - JDK1.8
查看>>