你可以处理列表的部分元素——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的更多相关文章

  1. python笔记 - day3

    python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...

  2. 关于javascript里面仿python切片操作数组的使用方法

    其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在写函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了..感觉很清爽,而且又开始写js的时候老是想用 ...

  3. python s12 day3

    python s12 day3   深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  4. 流畅的Python——切片

    2.4 切片 在 Python 里,像列表(list).元组(tuple)和字符串(str)这类序列类型都支持切片操作,但是实际上切片操作比人们所想象的要强大很多. 在我个人的使用经历来看,在算法实践 ...

  5. Python切片(入门7)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407977.html 本文出自:[Edwin博客园] Python切片 1. 对list进行切片 L = r ...

  6. 彻底搞懂Python切片操作

        在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任 ...

  7. python 切片步长

    python切片 切片:list变量[值下标:结束值下标]  什么意思呢? 就是获取 list中 下标从定义的位置开始获取数据到  自定义的下标位置结束, 但是切片有个规矩就是顾头不顾尾, 举个例子 ...

  8. 关于python切片操作笔记

    一. Python可切片对象的索引方式 包括:正索引和负索引两部分,如下图所示,以a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:   python索引方式.jpg 二. P ...

  9. 详解Python 切片语法

    Python的切片是特别常用的功能,主要用于对列表的元素取值.这篇文章主要介绍了详解Python 切片语法,需要的朋友可以参考下 Python的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...

随机推荐

  1. N天学习一个linux命令之rpm

    用途 RPM是Redhat Package Manager三个单词首字母缩写,是类redhat linux系统的包管理器,用它可以安装包(二进制/源码),升级包,删除包,查询包信息等功能.RPM软件包 ...

  2. linux系统读写缓存

    1.  操作系统缓存 在linux世界里,一切可读写设备都可看作是文件.文件cache设计的好坏直接影响着文件系统和磁盘的性能.最直观的是使用free命令看到的cached列. 这里面的cached列 ...

  3. Linux Container测试之block IO

      简介 Linux Container是OS级别的虚拟化方案,它相比于一般的虚拟机没有了硬件模拟以及指令模拟,相比传统虚拟机具有更低的开销,因此可以应用到私有云之中.LXC目前的版本支持对memor ...

  4. install pip 回顾

    在install pip的时候遇到如下问题 1. yum install 想安装一个package 总是提示没有package 可以安装. 但是后来可以了 2. make 和 configure 到底 ...

  5. objective-c中@class和#import

    objective-c中@class和#import #import "B.h" @interface A :NSObject { B *b; } @end @class 通常引入 ...

  6. 苹果iPhone6为何拯救不了富士康?

    最近有媒体报道,富士康正在招聘10万名新员工,这比美国5个州不论什么一个大城市的市民都还多.而招这些工人的目的就是生产下一代iPhone手机.分析师估计该手机的推出时间将在10月.对此,英国的< ...

  7. Chromium网页Graphics Layer Tree创建过程分析

    在前面一文中.我们分析了网页Render Layer Tree的创建过程.在创建Render Layer的同一时候,WebKit还会为其创建Graphics Layer.这些Graphics Laye ...

  8. luogu1726 上白泽慧音

    题目大意 求一个有向图含节点数最多且结点编号从小到大排列字典序最小的强连通分量. 注意事项 HDU1269那道题题面.数据太弱,在这道题上把我害惨了... Dfs点u时,如果与u相连的一个点v有Dfs ...

  9. Google android source code build 问题总结【转】

    本文转载自:http://light3moon.com/2015/01/31/Google%20android%20source%20code%20build%20%E9%97%AE%E9%A2%98 ...

  10. 倒排列表压缩算法汇总——分区Elias-Fano编码貌似是最牛叉的啊!

    来看看倒排索引压缩.压缩是拿CPU换IO的最重要手段之一,不论索引是放在硬盘还是内存中.索引压缩的算法有几十种,跟文本压缩不同,索引压缩算法不仅仅需要考虑压缩率,更要考虑压缩和解压性能,否则会解压太慢 ...