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的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...
随机推荐
- [bzoj2783][JLOI2012]树_树的遍历
树 bzoj2783 JLOI2012 题目大意:给定一棵n个点的树.求满足条件的路径条数.说一个路径是满足条件的,当且仅当这条路径上每个节点深度依次递增且点权和为S. 注释:$1\le n\le 1 ...
- 保护眼睛-eclipse黑色背景设置
eclipse中java编辑器颜色改动,适合程序员人群: 长时间编码,眼睛是有非常大负担的,特别是使用eclipse,它自带的java编辑器背景色是刺眼的白色.代码颜色基本是黑色,这样一个编辑器里白色 ...
- 【LeetCode OJ 232】Implement Queue using Stacks
题目链接:https://leetcode.com/problems/implement-queue-using-stacks/ 题目:Implement the following operatio ...
- Xcode HeaderDoc 教程(3)
打开 MathAPI.h,将第一个 @param 标签的參数名由firstNumber 改动为 thirdNumber,然后编译. 有一个警告发生.甚至提出了改动建议.它不会影响不论什么事情,但有助于 ...
- AndroidUI组件之ActionBar
有一段时间没有写博文了,发现自己的博文的完整度不是非常好.就拿AndroidUI组件这一块.一直没有更新完.我会尽快更新.好了.不多说了,今天来看一下ActionBar. 依照以往的作风.知识点都以代 ...
- 01背包模板、全然背包 and 多重背包(模板)
转载请注明出处:http://blog.csdn.net/u012860063 贴一个自觉得解说不错的链接:http://www.cppblog.com/tanky-woo/archive/2010/ ...
- jabberNet 修改花名册条目的昵称
修改昵称,这么简单的功能,在jabberNet里怎么实现? 翻遍了jabberNet里的代码,jabber.client.RosterManager也,JabberClient也,似乎都没有现成的方法 ...
- 学习笔记——WPF
WPF,Windows Presentation Foundation.主要作用在于界面呈现,但Presentation却是介绍的意思. WPF采用XAML + 代码相结合的方式,感觉跟ASP.NET ...
- Oracle VM VirtualBox使用的注意事项
Oracle VM VirtualBox使用的注意事项 Oracle VM VirtualBox 上克隆虚拟机 方法一 1.复制源虚拟里的 vdi 文件到新的目录 2.命令行进入 Oracle VM ...
- How to do IF NOT EXISTS in SQLite
http://stackoverflow.com/questions/531035/how-to-do-if-not-exists-in-sqlite How about this? INSERT O ...