Python中的赋值语法
Python中复制语法有6种
Basic Form
>>>spam = 'spam'
Tuple assignment
>>>spam, ham = 'spam', 'ham'
List assignmen
>>>[spam, ham] = ['spam', 'ham']
Sequence assignment
>>>a, b,c,d = 'spam'
Extended sequence unpacking(Python 3.X)
>>>a, *b = 'spam'
>>>a
's' >>>b # b赋值的结果是一个list
['p', 'a', 'm'] >>>a, *b, c = 'spam'
>>>a
's' >>>b
['p', 'a'] >>>c
'm'
对于这种复制方式,需要注意五点:
1 对于有*号变量的赋值结果,总是一个list,即使只包含一个元素
2 如果没有剩余的值赋给有*号的变量,那就是一个空list
>>>>a, b, c, *e, d = 'spam'
>>>a
's' >>>b
'p' >>>c
'a' >>>d
'm' >>>e # 与*变量的位置无关
[]
3 如果一条赋值语句中出现2个或者2个以上的*变量,会报错
4 变量个数和值的个数不匹配,也会报错
>>>a, b, c, d,e = 'spam' # 值个数太少
ValueError: not enough values to unpack (expected 5, got 4) >>>a, b = 'spam' # 变量个数太少
ValueError: too many values to unpack(expected 2)
5 带*号变量不在一个sequence中,也会报错
>>>*a = 'spam'
SyntaxError: starred assignment target must be in a list or tuple >>>*a, = 'spam' # 这样OK
>>>a
['s', 'p', 'a', 'm']
Augmented assignment
>>>spams = 42
>>>spams += 42
>>>spams
84
Augmented assignment有3个优势:
1 简洁,可以少打字,哈哈
2 对于X += Y的形式,如果X是一个很复杂的对象,那么Augmented assignment对X只运行一次代码,而如果写成X = X + Y的形式,对于X的代码会运行两次
3 在某些情形下,X+=Y是一种优化
>>>L = [1, 2]
>>>L = L + [3, 4] # 这种形式的+会创建一个临时的,新的list,然后将L和要连接的数组copy进去,最后再把这个临时的,新的list赋值给L,效率低
>>>L
[1, 2, 3, 4] >>>L = [1, 2]
>>>L += [3, 4] # 这种形式直接改变L,不创建新对象,也不拷贝,效率高
>>>L
[1, 2, 3, 4]
Python中的赋值语法的更多相关文章
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- python中的赋值操作和复制操作
之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...
- python中的赋值操作
参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...
- Python中的赋值和拷贝
赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...
- Python中的赋值、深拷贝与浅拷贝(内存地址)
Python中的赋值.深拷贝与浅拷贝(内存地址) 1.python中的可变对象与不可变对象 (1) 可变对象:dict,list def dict_test(): a = {} b = a print ...
- 全面了解Python中的特殊语法:filter、map、reduce、lambda。
这篇文章主要介绍了Python中的特殊语法:filter.map.reduce.lambda介绍,本文分别对这个特殊语法给出了代码实例,需要的朋友可以参考下filter(function, seque ...
- python中的“赋值与深浅拷贝”
Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的 ...
- Python中的基本语法
#Python的基本语法: #1.了解缩进 #Python中没有{}来表示一个代码块,但是Python使用缩进来完成区别代码框架 #那么在Python中一个缩进一般等于4个空格,当然你也可以使用TAB ...
- python中的赋值和深浅拷贝
python中,A object = B object 是一种赋值操作,赋的值不是一个对象在内存中的空间,而只是这个对象在内存中的位置 . 此时当B对象里面的内容发生更改的时候,A对象也自然而然的 ...
随机推荐
- ubuntu网卡配置及安装ssh服务
1.ubuntu网卡配置 1.查看网卡名称 ip a 2.进行编辑网卡配置文件 sudo vi /etc/network/interfaces 更改网卡配置文件添加内容修改内容如下:下面的enp0s3 ...
- laravel 安装添加多站点
官方文档如下 https://learnku.com/laravel/t/1160/laravel-nginx-multi-site-configuration
- IE8 如何 不显示 选项 卡,直接在任务显示 各个页面?
IE8 如何 不显示 选项 卡,直接在任务显示 各个页面? 在 工具->Internet 选项(o) ->常规--选项卡-设置->把第一个勾去掉 “启用选项卡浏览(需要重新启动 ...
- Python系列之入门篇——python2.7.13安装
Python2.7.13 安装 说明 以下所有操作都基于centos6.9 1. Issue zlib zlib-devel是安装setuptools依赖的模块,需要在安装python之前先安装这两个 ...
- 智能家居系统 Home Assistant 系列 --安装系统之Windows
Home Assistant 是一个成熟完整的基于 Python 的智能家居系统. 首先得安装Python环境.在浏览器中访问Python官网 www.python.org 进入Downloads中的 ...
- openwrt利用openvpn两网互通
目录 创建证书文件服务器端配置防火墙配置客户端配置uvs-001(远端PC)uvs-002(网关下属设备)测试连接 创建证书文件 安装证书工具 opkg openvpn-easy-rsa 创建证书 b ...
- Leecode刷题之旅-C语言/python-203移除链表元素
/* * @lc app=leetcode.cn id=203 lang=c * * [203] 移除链表元素 * * https://leetcode-cn.com/problems/remove- ...
- 【转】I2C总线相关知识
1. I2C access 1.1. I2C introduction I2C(Inter-Integrated Circuit)总线是由NXP恩智浦半导体公司在80年代开发的两线式串行总线,用来进行 ...
- Scratch入门课程(1)——把工具准备好
为了让更多的同学了解少儿编程,从今天开始,我将以每周1次的频率发布Scratch的入门课程,大约在30课时左右. 几点情况说明: 1.这批课程主要面向2-4年级的同学,难度都不大,按照教程可以很轻松地 ...
- java 中的线程池和线程 调用小demo
public class Main { public static void main(String[] args) { try { /// ThreadPoolExecutor executor = ...