Python列表的索引与切片


Posted in Python onApril 07, 2022

什么是索引?

  • 哪些数据类型里有索引的概念? —> 字符串、列表、元组
  • 从最左边记录的位置开始就是索引
  • 索引用数字表示,起始位是从 0 开始
  • 字符串、列表、元组的最大索引是他们的长度 - 1

示例如下:

names = ['Neo', 'Jack', 'Adem']
print(names[0])            # >>> Neo
print(names[-1])        # >>> Adem
print(names[5])            # IndexError: list index out of range    没有索引为5的元素,所以报错

什么是切片?

  • 索引用来对单个成员(元素)进行访问,切片则是对一定范围内的成员(元素)进行访问
  • 切片通过冒号的方式在中括号内把相隔的两个索引位置范围内的成员(元素)找出来,如 [0:10]
  • 切片的规则:左含,右不含; 左边包含,右边不包含
  • 通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容

示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(num_list[3:7])

执行结果如下:

>>> [4, 5, 6, 7]

获取列表的完整内容如下:

names = ['Neo', 'Jack', 'Adem']
print('names 列表完整的内容是:', names[:])
print('names 列表完整的内容是:', names[0:])

执行结果如下:

>>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']
 >>> names 列表完整的内容是: ['Neo', 'Jack', 'Adem']

通过切片方式获取的完整的列表已经不再是原来的列表了,即使获取的是原来列表的完整的内容,

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
print('\'names\' 列表的内存地址为:', id(names))
print('索引获取的完整\'names\' 列表的内存地址为:', id(names[0:]))

# 执行结果如下:
# >>> 'names' 列表的内存地址为: 140522949689152
# >>> 索引获取的完整'names' 列表的内存地址为: 140522949686656 

反序获取列表成员(元素),示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[::-1])       # 列表的反序
print(num_list[-3:-1])      # 列表的反向获取
print(num_list[0:8:2])      # 列表的步长获取:【每隔2步长(也可以理解为每两个数值)获取索引0到8的元素】

# 执行结果如下:
# >>> [8, 7, 6, 5, 4, 3, 2, 1]
# >>> [6, 7]
# >>> [1, 3, 5, 7]

切片生成空列表,示例如下:

num_list = [1, 2, 3, 4, 5, 6, 7, 8]
print(num_list[0:0]) 

# 执行结果如下:
# >>> []

列表的索引,获取与修改

  • list.index(item) 列表通过 index() 函数,传入一个元素来获取当前元素的索引值
  • list[index] = new_item ; list[index]为变量对应的索引的值; new_item 为一个新的元素
  • 数据修改的范围只能是已存在的索引范围内
  • 列表无法通过添加新的索引的方式赋值

示例如下:

test_str = ['a', 'b', 'c', 'd']
print(test_str.index('c'))

# 执行结果如下:
# >>> 2            'c' 的索引位置是 2


test_str = ['a', 'b', 'c', 'd']
print(test_str.index('e'))

# 执行结果如下:
# >>> ValueError: 'e' is not in list
test_str = ['a', 'b', 'c', 'd']
test_str[0]='z'
print(test_str)

# 执行结果如下:
# >>> ['z', 'b', 'c', 'd']


test_str = ['a', 'b', 'c', 'd']
test_str[:]='h', 'j', 'k', 'l'
print(test_str)

# 执行结果如下:
# >>> ['h', 'j', 'k', 'l']


test_str = ['a', 'b', 'c', 'd']
test_str[:]=['o', 'p', 'q', 'r']
print(test_str)

# 执行结果如下:
# >>> ['o', 'p', 'q', 'r']
test_str = ['a', 'b', 'c', 'd']
test_str[5]='z'
print(test_str)

# 执行结果如下:
# >>> IndexError: list assignment index out of range

通过 pop() 函数删除索引

pop() 函数的功能:通过索引删除并获取列表的元素

pop() 函数的用法: list.pop(index) , index 为删除列表的第几个元素

  • 函数会删除该索引的元素并返回
  • 如果传入的 index 索引不存在,则会报错

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
pop_item = names.pop(1)
print('删除的元素为:', pop_item, ', 被删除后的\'names\'列表为:', names)

# 执行结果如下:
# >>> 删除的元素为: Jack , 被删除后的'names'列表为: ['Neo', 'Adem', 'Lily']


names = ['Neo', 'Jack', 'Adem', 'Lily']
pop_item = names.pop(5)
print(names)

# 执行结果如下:
# >>> IndexError: pop index out of range

通过 del 删除索引

del 函数的功能:通过索引删除并获取列表的元素

del 函数的用法: del list(index) , index 为删除列表的第几个元素

  • 直接删除,无返回值
  • 如果传入的 index 索引不存在,则会报错

示例如下:

names = ['Neo', 'Jack', 'Adem', 'Lily']
del names[0]
print(names)

# 执行结果如下:
# >>> ['Jack', 'Adem', 'Lily']


names = ['Neo', 'Jack', 'Adem', 'Lily']
del names[0]
print(names)

# 执行结果如下:
# >>> IndexError: list assignment index out of range

索引在元组中的特殊性

  • 可以和列表 一样获取索引与切片索引
  • 元组函数 index 和列表的用法完全一致
  • 无法通过索引修改、删除元素(因为元组是不可修改的)

到此这篇关于Python列表的索引与切片的文章就介绍到这了,更多相关Python 索引与切片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python设计模式之单例模式实例
Apr 26 Python
Python 序列的方法总结
Oct 18 Python
Python定时器实例代码
Nov 01 Python
TensorFlow实现创建分类器
Feb 06 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
详解Flask前后端分离项目案例
Jul 24 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 Python
Python图片验证码降噪和8邻域降噪
Aug 30 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
js href的用法
2010/05/13 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
Python过滤列表用法实例分析
2016/04/29 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
竞聘演讲稿范文
2014/01/12 职场文书
财务工作失误检讨书
2015/02/19 职场文书
质量保证书格式
2015/02/27 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python