Python 切片 day3
你可以处理列表的部分元素——Python称之为切片 。
一、使用方法:
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。
与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。
要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0 、1 和2 的元素。
- 如下为例子:
l = ['xiaoming', 'xiaohei', 'xiaobai', 'jaojun']- print(l[0:1]) #切片,顾头不顾尾,不包含后面的元素
- print(l[:2]) #冒号前面的不写,代表从最前面0开始
- print(l[1:]) #冒号后面的不写,代表从最后面结束
- print(l[:]) #等同于 print(l)
二、适用范围:
只要能用下标取值的都可以用切片取值;入:字符串、元组、列表
- s = 'abcdefg'
- print(s[:3])#结果为'abc'
- s2 = ''
- print(s2[::-1])#切片的步长如果为负数,则从后往前取 7654321
- print(s2[-1:-5:-2])#倒着取,隔一个一取值 结果为:75
三、关于列表内存地址的习题
- #题目为移除所有奇数
- li = [1,1,2,3,4,5,6,7,8,9]
- #下面的方法为错误方法:
- for i in li:
- if i%2!=0:
- li.remove(i)
- print(li)
- #打印结果为[1, 2, 4, 6, 8]
- #原因是:移除第一个数后,下标变了,导致下标错乱
- #循环的时候不要删除list里面的元素,会导致下标错乱
- #解决方法:弄两个list,循环li2,删除li1
- #下面的方法为正确方法:
- li2 = [1,1,2,3,4,5,6,7,8,9]
- for i in li2:
- if i%2!=0:
- li.remove(i)
- print(li)
- #不能写成li2 = li;li里存的是内存地址,从内存地址找到对应元素;li2相当于和li内存地址相同
- li2 = li#结果li和li2内存地址相同
- print("li内存地址:",id(li))
- print("li2内存地址:",id(li2))
- li2 = li[:] #使用切片相当于生成一个新的list,内存地址不同
- print("li内存地址:",id(li))
- print("li2内存地址:",id(li2))
四、浅拷贝、深拷贝
- l = [12,3,4]
- l2 = l
- l.append('')
- l2.remove(12)
- print(l2)
- import copy
- stus = ['abc','xiaohei','abc2']
- stus1 = stus #浅拷贝,内存地址没变
- stus2 = stus[:] #深拷贝,内存地址变了,互不影响
- stus3 = copy.deepcopy(stus) #深拷贝,需要引入copy模块
- l1 = ['xiaoming', 'xiaohei', 'xiaobai', 'jaojun','xiaolei']
- print(l1[0:6:1])#挨个取
- print(l1[0:6:2])#2为步长,隔n-1个取一个
Python 切片 day3的更多相关文章
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- 关于javascript里面仿python切片操作数组的使用方法
其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在写函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了..感觉很清爽,而且又开始写js的时候老是想用 ...
- python s12 day3
python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 流畅的Python——切片
2.4 切片 在 Python 里,像列表(list).元组(tuple)和字符串(str)这类序列类型都支持切片操作,但是实际上切片操作比人们所想象的要强大很多. 在我个人的使用经历来看,在算法实践 ...
- Python切片(入门7)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407977.html 本文出自:[Edwin博客园] Python切片 1. 对list进行切片 L = r ...
- 彻底搞懂Python切片操作
在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任 ...
- python 切片步长
python切片 切片:list变量[值下标:结束值下标] 什么意思呢? 就是获取 list中 下标从定义的位置开始获取数据到 自定义的下标位置结束, 但是切片有个规矩就是顾头不顾尾, 举个例子 ...
- 关于python切片操作笔记
一. Python可切片对象的索引方式 包括:正索引和负索引两部分,如下图所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例: python索引方式.jpg 二. P ...
- 详解Python 切片语法
Python的切片是特别常用的功能,主要用于对列表的元素取值.这篇文章主要介绍了详解Python 切片语法,需要的朋友可以参考下 Python的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...
随机推荐
- JS 仿淘宝幻灯片 非完整版 小案例
仿淘宝幻灯片,基础版,后期效果是要做到每次点击小圆点,切换都无缝 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" &quo ...
- loosejar原理简要分析
loosejar这个小工具能够动态分析出应用中有每一个jar包的实际使用情况,详情请參阅<通过loosejar清理应用中冗余的jar包>基本原理是利用instrumentation的特性用 ...
- 深入分析JavaWeb Item38 -- 监听器(Listener)高速学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其它对象身上发生的事件或状态改变进行监听和对应处理的对象,当被监视的对象发生情况时,马上採取对应的行动.监听器事实上就是一个实现特定接口的普 ...
- springmvc学习笔记(10)-springmvc注解开发之商品改动功能
springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmvc学习笔记10-springmvc注解开发之商品改动功能 需求 开发mappe ...
- Java 构造时成员初始化的陷阱
1.首先列出代码 Base.java public class Base { Base() { preProcess(); } void preProcess() {} } Derived.java ...
- luogu4218 [JSOI2008] 最小生成树计数
题目大意 求一个加权无向图的最小生成树的个数.1<=n<=100; 1<=m<=1000,具有相同权值的边不会超过10条. 题解 命题1 由构成最小生成树的边的边权从小到大排序 ...
- linux下获取按键响应事件【转】
本文转载自:https://my.oschina.net/u/157503/blog/91548 1.问题 通过一个死循环将读取键盘对应的设备文件将触发键盘事件在屏幕上打印出来,按esc退出程序 代码 ...
- C++ 单例模式(读书笔记)
#include <iostream> class Singleton { static Singleton s; int i; Singleton(int x):i(x ...
- 解决VS2008 开发Wince应用程序项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- 关于Vue.js去掉#号路由
正常启动后访问路由: 中间会自动加入一个#号 去掉#号: 在route文件夹下的index.js中加入mode: 'history', ①: ②: 关于mode说明: 默认值: ‘hash‘(浏览器) ...