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黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
Jul 06 Python
在python中使用xlrd获取合并单元格的方法
Dec 26 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
详解python中的hashlib模块的使用
Apr 22 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
Python的Lambda函数用法详解
Sep 03 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
php时间不正确的解决方法
2008/04/09 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php模板原理讲解
2013/11/13 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
28个JS验证函数收集
2010/03/02 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
vue写一个组件
2018/04/09 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
python如何建立全零数组
2020/07/19 Python
Python 随机按键模拟2小时
2020/12/30 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
清洁工岗位职责
2014/01/29 职场文书
诚信考试标语
2014/06/24 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
追悼词范文大全
2015/06/23 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
《落花生》教学反思
2016/02/16 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python