python序列(五)切片操作
功能:截取列表中的任何部分。
切片适用于列表、元组、字符串、range对象等类型。。
格式:[::]切片使用两个冒号分隔的3个数字来完成。
第一个数字表示切片开始位置(默认为0)。
第二个数字表示切片截止(但不包含)位置(默认为列表长度)。
第三个数字表示切片的步长(默认为1),当步长省略是可省略最后一个冒号。
1.切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表。
>>> alist=[1,2,3,4,5,6,7,8,9,0,]
>>> alist[::] #返回包含元素的新列表
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> alist[::-1] #逆序的所有元素
[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> alist[::2] #偶数位置,隔一个取一个
[1, 3, 5, 7, 9]
>>> alist[1::2] #奇数位置,隔一个取一个
[2, 4, 6, 8, 0]
>>> alist[3::] #从下标3开始的所有元素
[4, 5, 6, 7, 8, 9, 0]
>>> alist[3:6] #下标在[3,6]之间的所有元素
[4, 5, 6]
>>> alist[0:100:1] #前100个元素,自动截断
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> a[100:] #下标100之后的所有元素,自动截断
[]
>>> x[100] #直接使用下标访问会发生越界
Traceback (most recent call last):
File "<pyshell#131>", line 1, in <module>
x[100]
IndexError: list index out of range
2.可以使用切片来原地修改列表内容
>>> alist
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> alist[len(alist):]=[9] #在尾部追加元素
>>> alist
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9]>>> alist[:3]=[3,2,1] #替换前三个元素
>>> alist
[3, 2, 1, 4, 5, 6, 7, 8, 9, 0, 9]
>>> alist[:3]=[] #删除前三个元素
>>> alist
[4, 5, 6, 7, 8, 9, 0, 9]
>>> alist=list(range(10))
>>> alist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> alist[::2]=[0]*5 #替换偶数位置上的元素
>>> alist
[0, 1, 0, 3, 0, 5, 0, 7, 0, 9]
>>> alilst[::2]=[0]*3 #切片不连续,两个元素个数必须一样多
Traceback (most recent call last):
File "<pyshell#153>", line 1, in <module>
alilst[::2]=[0]*3
NameError: name 'alilst' is not defined
3.使用del与切片结合来删除列表元素
>>> alist=[3,4,5,6,7,]
>>> del alist[:3] #删除前三个元素
>>> alist
[6, 7]
>>> alist=[3,4,5,6,7]
>>> del alist[::2] #删除偶数位置上的元素
>>> alist
[4, 6]
4.切片返回的是列表元素的浅复制
>>> alist=[3,5,7]
>>> blist=alist
>>> blist
[3, 5, 7]
>>> blist[1]= 8
>>> alist
[3, 8, 7]
>>> alist==blist
True
>>> alist is blist
True
>>> id(alist)
2848177707136
>>> id(blist)
2848177707136
5.浅复制是把原列表中所有元素的引用都复制都信列表中
原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。
原列表中包含列表之类的可变数据类型,由于浅复制是只是把子列表的引用复制到新列表中,修改任何一个都会影响另外一个。
>>> alist=[1,2,3]
>>> blist=alist[::] #切片,浅复制
>>> alist==blist #两个列表的元素完全一样
True
>>> alist is blist #但不是同一个对象
False
>>> id(alist)==id(blist) #内存地址不一样
False
>>> blist[1]=8 #修改一个不会影响另一个
>>> blist
[1, 8, 3]
>>> alist
[1, 2, 3]
python序列(五)切片操作的更多相关文章
- Python序列的切片操作与技巧
切片操作 对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]. start_index: 表示是第一个元素对象,正索引位置 ...
- Python中的切片操作
python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...
- python学习之“切片操作从入门到精通”
在python学习开发的过程中,我们总是不断的要对List(列表),Tuple(元组)有取值操作:假如我们有一个列表List1现在想取出1其中的前5个元素,改怎么操作呢? >>> L ...
- python列表的切片操作允许索引超出范围
其余的不说,列表切片操作允许索引超出范围:
- Python列表的切片操作
在Python列表中分片是一个很重要的操作,有以下几个注意的点: 切片时不包含最后一位,如下例子中,要取最后一位,从0开始算应该是到7就可以取,但是需要8才能取 2. 默认取值步长为1,即每 ...
- python 序列 转换 各种操作
# 数据结构 字符串 列表 元组 数字序列# 10-19的整数# r1 = range(10,20)# print(r1)# print(type(r1))## # 19# print(r1[9])# ...
- Python中字符串切片操作
一:取字符串中第几个字符 print "Hello"[0] 表示输出字符串中第一个字符print "Hello"[-1] 表示输出字符串中最后一个字符 二: ...
- Python字符串切片操作知识详解
Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...
- Python——序列
#!/usr/bin/python #coding:utf8 ''' Python——序列 字符串的操作 ''' s = 'abcdefg' print s print s[2] print s[-1 ...
- limit和offset、切片操作
#encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,\ Da ...
随机推荐
- Java基础教程——多态
直观地说,多态就是"一个对象,多种形态 ".比如观世音菩萨就有多种形态-- 每个人都有多种形态-- 具体地讲,多态是指"同一个对象.同一个方法(函数),表现出不同的行为& ...
- MySQL查询练习2
MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...
- 企业安全06-Fastjson-CNVD-2017-02833
Fastjson-CNVD-2017-02833 一.漏洞概述 fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启 ...
- python -- 对list去重并找出列表list中的重复元素
一.一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数. 代码: from collections imp ...
- 【mq读书笔记】消息到达唤醒挂起线程检查新消息
DefaultMessageStore#start 当新消息到达CommitLog是,ReputMessageService线程负责将消息转发给ConsumeQueue,IndexFile,如果Bro ...
- On-Demand Learning for Deep Image Restoration
摘要 论文来源:ICCV 2017 之前的缺点:目前的机器学习方法只专注于在特定困难程度的图像损坏(如一定程度的噪声或模糊)情况下进行良好的训练模型. 改进的方法:提出了一种基于深度卷积神经网络的按需 ...
- copy/b一个隐藏文件的小技巧
首先找一张图片 再放一个我们想隐藏的东西 压缩一下 新建txt文本文件b.txt,输入这段代码 copy/b namei.jpg + a.rar namei2.jpg 保存,将文件名改为b.bat 双 ...
- PTA天梯赛校内模拟
最长对称子串 || 区间dp || 马拉车 dp[i][j]表示区间[i, j]是否为回文串,若是则为1,不是则为0. 边界条件: 1. 区间长度为1,dp为1.(奇数个字符递推的起始情况) 2. 区 ...
- 欢迎使用CSDN-markdown编辑器(这个只能看到一次保存一下)
欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接 ...
- Leetcode学习笔记(2)
题目1 ID面试题 01.04 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. 示例 ...