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 元类使用说明
Dec 18 Python
Python文件夹与文件的操作实现代码
Jul 13 Python
python将unicode转为str的方法
Jun 21 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python opencv调用笔记本摄像头
Aug 28 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
Python常用类型转换实现代码实例
Jul 28 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
php获取数组中重复数据的两种方法
2013/06/28 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
js实现二级导航功能
2017/03/03 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
Python中的并发编程实例
2014/07/07 Python
Python实现二叉搜索树
2016/02/03 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
静态变量和实例变量的区别
2015/07/07 面试题
高级Java程序员面试题
2016/06/23 面试题
怎么写有吸引力的自荐信
2013/11/17 职场文书
客服主管岗位职责
2013/12/13 职场文书
元旦获奖感言
2014/03/08 职场文书
师范毕业生求职信
2014/07/11 职场文书
安全标兵事迹材料
2014/08/17 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年新教师工作总结
2014/11/08 职场文书
第二次离婚起诉书
2015/05/18 职场文书