Python切片赋值操作
来源:互联网 发布:数据分析在职研究生 编辑:程序博客网 时间:2024/06/05 09:08
1. 问题
首先来看一小段列表推到的python代码
a = [1,2,3]b = a# 赋值1b[:] = [x+1 for x in a]print(a,b)# 赋值2b = [x-1 for x in a]print(a,b)
来看看输出吧:
[2, 3, 4] [2, 3, 4][2, 3, 4] [1, 2, 3]
可能有人会有疑问,为什么同样是复制操作,结果却不同?
2. step by step
其实我们有结果再推原因,应该大概可以知道可能b[:]和a是共享同一块内存的,实践是检验真理的唯一标准,让我们分别在赋值1和赋值2之后分别输出a,b的内存地址如下:
140348034061384 140348034061384140348034061384 140348034060872
果不其然,第一次a,b都指向的是同一块内存,而赋值2则是在原来的地址上做修改,或者可以分别输出a is b来判断a,b是否为同一个对象
再将代码稍加改动:
a = [1,2,3]# 改成a的切片b = a[:]print(a,b)print(id(a),id(b))b = [x-1 for x in a]print(a,b)print(id(a),id(b))
此时的输出为:
[1, 2, 3] [1, 2, 3]140489909315016 140489909314312[1, 2, 3] [0, 1, 2]140489909315016 140489909314632
我们发现当使用a[:]时,这时候返回的是一个新的对象,所以其id都不相同
阅读全文
0 0
- Python切片赋值操作
- Python札记 -- 切片赋值
- Python切片赋值
- Python 切片操作
- python切片操作
- 【Python】切片操作符
- python-切片操作符
- Python切片操作
- python 切片操作
- python切片操作
- python中的切片操作
- python切片操作
- Python的切片操作
- Python切片操作
- Python—切片操作
- Python切片操作
- PYTHON之切片操作
- python之切片操作
- hdoj 6058(2017 Multi-University Training Contest
- 找规律-POJ3372
- TwoSum(算法分析课week1)
- 大数据Hive的案例、参数、动态分区、分桶、视图、索引、运行方式、权限管理、Hive的优化_03_03
- buildroot
- Python切片赋值操作
- 指向函数的指针
- MFC一一框架类当中的一些操作(改变标题,设置菜单栏,工具栏)
- linux+apache+mysql+php环境搭建配置多个网站(全程实操)
- HDOJ 1394 Minimum Inversion Number(线段树+逆序数)
- Java的21个核心技术点,你知道吗?
- 详解Java中ArrayList、Vector、LinkedList三者的异同点
- POJ2996 Help Me with the Game(未完待续,模拟)
- vector & list