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简单实现旋转图片的方法
May 30 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
Python3安装pip工具的详细步骤
Oct 14 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
python中xlrd模块的使用详解
Feb 01 Python
Python Selenium操作Cookie的实例方法
Feb 28 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
Python字符串的转义字符
Python字符串格式化方式
Apr 07 #Python
Python中re模块的元字符使用小结
Python基本知识点总结
Apr 07 #Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 #Python
Python OpenCV实现图像模板匹配详解
Python实现日志实时监测的示例详解
You might like
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
ng2学习笔记之bootstrap中的component使用教程
2017/03/09 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
通过python检测字符串的字母
2020/02/18 Python
大学生毕业的自我评价分享
2014/01/02 职场文书
《故乡》教学反思
2014/04/10 职场文书
物流管理专业求职信
2014/05/29 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
承诺书范本
2015/01/21 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书