当前位置:网站首页>Python中[:]与[::]的用法
Python中[:]与[::]的用法
2020-11-09 22:37:00 【巨輪】
Python中[:]与[::]的用法
概述
[:]与[::]语法是通用序列操作(Common Sequence Operations)其中的两个。用[:]或[::]对多数序列类型(可变的或不可变的)(如字符串、列表等)序列中元素进行截取。
[:]的用法
s[i:j]
从下标i到下标j,截取序列s中的元素。
- 如果i或j为负数,则下标从序列尾部算起,也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0。
- 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间所有元素,进行截取。另外,i < j。
- 若i或j大于len(s),则i或j被len(s)取代。
- 若i省略或i是None值,则i被0取代。
- 若j省略或j是None值,则j被len(s)取代。
- 若i>=j,返回没元素的序列。
>>> a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[-1:]
[9]
>>> a[-9:-1]
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[1:20]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:9]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> a[0:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[9:3]
[]
>>>
[::]的用法
s[i:j:k]
从下标i到下标j,步数为k,截取序列s中的元素。
- 如果i或j为负数,则下标从序列尾部算起,也就是说,下标i相当于下标len(s)+i,下标j相当于下标len(s)+j。另外,-0依然是0。
- 从序列s的下标i的元素(包含)到下标j的元素(不包含)之间,选取下标为i+n*k的元素(0 <= n < (j-i)/k),也就是说,选取下标为i, i+k, i +2*k, i+3*k等等的元素,直到下标大于等于j为止。
- 当k为正数,下标选取反向从0到len(s)-1。
- 当k为负数,下标选取反向从len(s)-1到0。
- 当i或j省略或是None值,则被端下标(0或len(s)-1)所取代(具体看k的正负符号)。
- k不能为0。若k为None值,则将k看成1。
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[1:10:2]
[1, 3, 5, 7, 9]
>>> a[1:10:3]
[1, 4, 7]
>>> a[1:10:-2]
[]
>>> a[1:10:-3]
[]
>>> a[10:1:-2]
[9, 7, 5, 3]
>>> a[10:1:-3]
[9, 6, 3]
>>> a[::2]
[0, 2, 4, 6, 8]
>>> a[::-2]
[9, 7, 5, 3, 1]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[-9:-1:2]
[1, 3, 5, 7]
>>> a[-9:-1:-2]
[]
>>> a[-1:-9:-2]
[9, 7, 5, 3]
>>> a[-1::-2]
[9, 7, 5, 3, 1]
>>> a[:-1:2]
[0, 2, 4, 6, 8]
>>>
参考资料
版权声明
本文为[巨輪]所创,转载请带上原文链接,感谢
https://my.oschina.net/jallenkwong/blog/4710314
边栏推荐
- 迅为IMX6ULL开发板C程序调用shell
- [best practice] learn how eolinker helps Telecommuting
- JT-day10
- CRM系统能帮助企业做哪些事?
- 磁阻式随机存储器MRAM基本原理
- LeetCode 50 Pow(x,n)
- EMQ X 在中国建设银行物联网平台中的应用
- 价值超10亿美元的直播系统架构图是什么样子的?
- Unemployment after graduation? How do college students allocate their study time and have a complete computer knowledge system?
- eleven point nine
猜你喜欢

How SSL certificate and public IP address affect SEO

都要2021年了,现代C++有什么值得我们学习的?

EMQ X 在中国建设银行物联网平台中的应用
![[QT] subclass QObject + movetothread to realize multithreading](/img/47/e91ee9126d495f1b5dea8f016dace2.jpg)
[QT] subclass QObject + movetothread to realize multithreading

win7+vs2015+cuda10.2配置TensorRT7.0

手把手教你使用容器服务 TKE 集群审计排查问题

ES6, ES7, es8 Learning Guide
![[graffiti Internet of things footprint] graffiti cloud platform interface description](/img/3b/00bc81122d330c9d59909994e61027.jpg)
[graffiti Internet of things footprint] graffiti cloud platform interface description

The problem of looting by leetcode

lvgl 库 V7版本相关应用
随机推荐
都要2021年了,现代C++有什么值得我们学习的?
Win7 + vs2015 + cuda10.2 configuration tensorrt7.0
在PHP7下怎么大幅度提升Laravel框架性能?安装Stone!
[最佳实践]了解 Eolinker 如何助力远程办公
JT-day10
骚操作!嵌套 JSON 秒变 Dataframe!
Make a home page
技术点5:XML语言
day84:luffy:优惠活动策略&用户认证&购物车商品的勾选/结算
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
[best practice] learn how eolinker helps Telecommuting
动物园[CSP2020]
Quick for imx6ull development board c program call shell
Markdown plug-in of vscode
报错 Type interface *** is not known to the MapperRegistry. 的解决方案
How to carry out modular power operation efficiently
Chrome扩展程序热更新方案:2.基于双缓存更新功能模块
商品后台系统实现
Daily page number style problems
YoMo Codec - Y3的性能评测报告