Python切片一文读懂: Python 切片操作的深层理解_详细图解
2023-09-11 14:21:46 时间
一、Python切片实例
下面以字符串对象 str1
为例进行切片操作.
#!/usr/bin/env python3
# encoding:utf-8
str1 = '0123456789'
print('str1:', str1)
print('\n正序...')
print('{} {:<12s} {:<12s} {:<12s} {:<12s}'.format(
'i', 'str1[i:]', 'str1[:i]', 'str1[-i:]', 'str1[:-i]'))
for i in range(len(str1)):
result = '{} {:<12s} {:<12s} {:<12s} {:<12s}'.format(
i, str1[i:], str1[:i], str1[-i:], str1[:-i])
print(result)
print('\n逆序...')
print('{} {:<12s} {:<12s} {:<12s} {:<12s} {:<12s} {:<12s}'.format(
'i', 'str1[i::-1]', 'str1[:i:-1]', 'str1[-i::-1]', 'str1[:-i:-1]', 'str1[i:4:-1]', 'str1[0:i:-1]'))
for i in range(len(str1)):
result = '{} {:<12s} {:<12s} {:<12s} {:<12s} {:<12s} {:<12s}'.format(
i, str1[i::-1], str1[:i:-1], str1[-i::-1], str1[:-i:-1], str1[i:4:-1], str1[0:i:-1])
print(result)
'''
str1: 0123456789
正序...
i str1[i:] str1[:i] str1[-i:] str1[:-i]
0 0123456789 0123456789
1 123456789 0 9 012345678
2 23456789 01 89 01234567
3 3456789 012 789 0123456
4 456789 0123 6789 012345
5 56789 01234 56789 01234
6 6789 012345 456789 0123
7 789 0123456 3456789 012
8 89 01234567 23456789 01
9 9 012345678 123456789 0
逆序...
i str1[i::-1] str1[:i:-1] str1[-i::-1] str1[:-i:-1] str1[i:4:-1] str1[0:i:-1]
0 0 987654321 0 987654321
1 10 98765432 9876543210
2 210 9876543 876543210 9
3 3210 987654 76543210 98
4 43210 98765 6543210 987
5 543210 9876 543210 9876 5
6 6543210 987 43210 98765 65
7 76543210 98 3210 987654 765
8 876543210 9 210 9876543 8765
9 9876543210 10 98765432 98765
'''
二、Python两套索引
三、切片理解
1. 切片基本逻辑
str1[start:stop:step]
- 序列索引从左往右以0开始,从右往左以-1开始,-0等于0.
- 切片结果不包含stop索引对应的值.
- 切片逻辑: 从start开始,以step为步长,到stop(不含)为止,step正负表截取的方向,正向右,负向左.
2. 正、逆序不同之处
- 正序:
str1[start=0 : stop=len(str) : step=1]
⚠️ 注意默认参数
- 执行理解: step为正时,从start开始,以step为步长,到stop(不含)为止,从左往右截取.
- 3个参数都有默认值,步长step不能为0,三个参数可正可负.
- start元素的逻辑位置需在stop元素逻辑位置的左边,否则返回空列表.
- start 与 stop 位置与切片结果的关系:
- 逆序:
str1[start=-1 : stop=-len(str)-1 : step=-n]
⚠️ 注意默认参数
- 执行理解: step为负时,从start开始,以step为步长,到stop(不含)为止,从右往左截取.
- 前2个参数有默认值,实参可正可负,步长step不能为-0.
- start元素的逻辑位置需在stop元素逻辑位置的右边,否则返回空列表.
- start 与 stop 位置与切片结果的关系:
四、深层原理
(下面以列表 list 为例)
获取元素: 调用 list.__getitem__(i)
方法,相当于 list[]
.
切片操作: 调用 list.__getitem__(slice(start, stop[, step]))
方法,相当于 list[start:stop:step]
.
注:slice, 切片类.
附:slice类
>>> help(slice) Help on class slice in module builtins: class slice(object) | slice(stop) | slice(start, stop[, step]) | | Create a slice object. This is used for extended slicing (e.g. a[0:10:2]).
©2021 CherryChenNan
点赞支持,收藏学习,关注不迷路~
相关文章
- Python中Matplotlib模块的简单使用
- python魔法方法之-Python __repr__()方法:显示属性
- Python任意参数的数量/预习课python基础
- 绿化版Java11的环境配置与Python调用Java
- Python kafka操作实例(kafka-python)
- Python初学者如何系统的学习python————Python入门学习指南--内附学习路径
- 超全Python学习路线图+14张思维导图,让python初学者不走弯路
- 零基础自学Python需要多长时间从入门到精通?学python能兼职挣钱吗?怎么挣钱?
- 基于Python下的Apriltag检测
- 《Python树莓派编程》——1.5 连接外围设备
- 《python 与数据挖掘 》一 第2章 Python基础入门
- python 安装依赖几个问题---HttpScan
- 【Python】【PyPI】twine模块打包python项目上传pypi
- Python 相对路径和绝对路径--python实战(九)
- ubuntu 16.04 python版本切换(python2和python3)
- python学习之OpenCV-Python模块的部分应用示例(生成素描图和动漫图)
- 通过 Mito 在 Python 中使用电子表格
- 《Python硬件编程实战》——2.5 下载合适的Python安装包
- 【转载】python的魔法方法———A Guide to Python's Magic Methods
- 为python安装扩展模块时报错——error: invalid command 'bdist_wheel'
- Python 标准库
- 12. python爬虫——基于selenium登陆12306网站
- Python 基础 之 Ubuntu 上安装 python 和 python-pip
- Python 基础 之 python 中 进程、线程、协程对比 区别和联系
- Python 基础 之 python 进程知识点整理,实现一个简单使用进程池的多进程文件夹文件copy器
- 使用 Mypy 进行 Python 静态类型检查
- [Python]python+yaml三行代码完成配置文件灵活读取与warning:YAMLLoadWarning处理
- 【python】dict多种方法实现去除字典value为0 的元素