Python包含6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。

这些序列支持通用的操作:

索引

索引是从0开始计数;当索引值为负数时,表示从最后一个元素(从右到左)开始计数。这里列举几个例子:

#字符串字面值可以直接使用索引,不需要专门的变量引用

>>> 'Hello World!'[0]

'H'

>>> 'Hello World!'[11]

'!'

#注意越界

>>> 'Hello World!'[12]

Traceback (most recent call last):

File "", line 1, in

IndexError: string index out of range

#表示右边第一个

>>> 'Hello World!'[-1]

'!'

>>> 'Hello World!'[-11]

'e'

#注意越界

>>> 'Hello World!'[-12]

'H'

>>> 'Hello World!'[-13]

Traceback (most recent call last):

File "", line 1, in

IndexError: string index out of range

分片

分片用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测索引值对应的元素。有几种典型的使用方法,参考举例:

#注意不包括右边索引值对应的元素

>>> num = [1,2,3,4,5,6,7,8,9,10]

>>> num[3]

4

>>> num[6]

7

>>> num[3:6]

[4, 5, 6]

#留意右边边界

>>> num[3:9]

[4, 5, 6, 7, 8, 9]

#右边越界,刚好是10对应的下一个索引值

>>> num[3:10]

[4, 5, 6, 7, 8, 9, 10]

#右边越界

>>> num[3:11]

[4, 5, 6, 7, 8, 9, 10]

#注意是不包含最后一个元素的

>>> num[-3:-1]

[8, 9]

>>> num[-4:-1]

[7, 8, 9]

>>> num[-10:-1]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

#注意右边界

>>> num[-10:0]

[]

>>> num[-5:-1]

[6, 7, 8, 9]

#注意右边界

>>> num[-5:]

[6, 7, 8, 9, 10]

>>> num[-5:1]

[]>>> num[3:1]

[]

>>> num[3:-1]

[4, 5, 6, 7, 8, 9]

#取最右3个元素

>>> num[-3:]

[8, 9, 10]

#取最左3个元素

>>> num[:3]

[1, 2, 3]

#可以加入step length

>>> num[1:10:3]

[2, 5, 8]

>>> num[0:10:3]

[1, 4, 7, 10]

#起始位置默认为最左和最右,但不包括最右的元素

>>> num[::2]

[1, 3, 5, 7, 9]

>>> num[0:9:1]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> num[0:10:1]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#如果step length为0,会报错,也就是说步长不可以为0

>>> num[1:5:0]

Traceback (most recent call last):

File "", line 1, in

ValueError: slice step cannot be zero

#如果步长为负数,表示从右向左提取元素

#注意不包括6对应的元素

num[10:6:-1]

[10, 9, 8]

#倒序输出

>>> num[10::-1]

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

#从最左边开始

>>> num[:-3:1]

[1, 2, 3, 4, 5, 6, 7]

>>> num[:3:1]

[1, 2, 3]

#从最右边开始

>>> num[:3:-1]

[10, 9, 8, 7, 6, 5]

要点:分片包括起始索引对应的元素,但不包括终止索引对应的元素。如果索引值为负值,则表示从最右边元素开始,需避免索引越界。

'+'运算

表示两个序列的相连,但是仅允许相同类型的序列才能进行连接操作。举例:

#列表

>>> [1,2,3] + [3,2,1]

[1, 2, 3, 3, 2, 1]

#字符串

>>> 'Hi' + ',' + 'Baby'

'Hi,Baby'

#元组(tuple)

>>> ('This','is','a') + ('test','case')

('This', 'is', 'a', 'test', 'case')

#如果序列类型不一致,则会报错

>>> 'Hi' + [1,2]

Traceback (most recent call last):

File "", line 1, in

TypeError: cannot concatenate 'str' and 'list' objects

小结:序列支持‘+’运算,表示两个相同类型的序列的连接。

'*'运算

'*'运算表示生成一个元素重复多次的序列,举例:

>>> 'hi '*5

'hi hi hi hi hi '

>>> "hello" * 3

'hellohellohello'

>>> (1,2,3) * 4

(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)

>>> [1,2,3] * 4

[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

#支持none

>>> [None]*10

[None, None, None, None, None, None, None, None, None, None]

#支持交换律

>>> 4 * [1,2,3]

[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

乘法表示将序列重复N次以生成一个新的序列,可以用None进行初始化一个序列。

python索引右往左_[Python笔记]序列(一)索引、分片相关推荐

  1. python索引右往左_左手用R右手Python系列5——数据切片与索引

    数据框索引: 基于数据框本身提取 subset函数 filter+select函数 Python: 数据框自身的方法 ix方法 loc方法 iloc方法 query方法 数据框自身的方法 ix方法 l ...

  2. Python从右向左查找字符串(倒序查找 从右往左)

    2021-10-14更新: 其实有一个很简单的内置函数,就是rfind,示例如下: txt = '0123456789' print(txt.rfind('8')) # 输入结果为8,也就是查找到的位 ...

  3. python小软件制作教程_[Python]手把手教程:Python制作番茄钟

    这篇文章是根据Udacity的免费课程 编程基础:Python所做的笔记,适合零基础学习Python 我们先了解这个番茄钟的概念,就是每隔一段固定的时间就提醒你休息一下,可能是播放一段音乐, 弹出一个 ...

  4. 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集

    python教程,求一套比较好的python教程 好不好主要先看你自己,理解能力样,有没有接触过编程,有没础,这很重要: 看教程,能不能先给你建立起知识体系框架,许多教程一上来就直接给你灌输知识很让人 ...

  5. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境

    一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...

  6. python如何检验显著性差异_[Python] 如何证明两组样本有显著性差异(t-test假设检验) | 学步园...

    现有两组样本数据,假如它们分别基于两套不同的方法,或者测于不同的设备,又或是出自两个人之手,如何证明它们有或没有显著性差别呢?当然可以拿个Excel表把数据画个图,然后找一堆人来投票,看觉得差不多还是 ...

  7. 【MySQL】索引原理(三):联合索引(最左前缀原则),覆盖索引,索引条件下推

    准备工作,下面的演示都是基于user_innodb表: DROP TABLE IF EXISTS `user_innodb`; CREATE TABLE `user_innodb` (`id` big ...

  8. 建立唯一索引后mysql策略_【MySQL】MySQL索引背后的之使用策略及优化【转】

    另外很不错的对于索引及索引优化的文章: 索引的使用 示例数据库 为了讨论索引策略,需要一个数据量不算小的数据库作为示例.本文选用MySQL官方文档中提供的示例数据库之一:employees.这个数据库 ...

  9. python从右向左第三个字符_字符串是一个字符序列,例如,字符串s,从右侧向左第3个字符用什么索引?_学小易找答案...

    [填空题]表达式 'aaasdf'.rstrip('af') 的值为 _______________ . [填空题]表达式 'Hello world!'.count('l') 的值为 ________ ...

最新文章

  1. TensorFlowMNIST数据集逻辑回归处理
  2. SQLite数据转换成sql server数据
  3. java ftp下载文件源码_java实现ftp文件下载的源代码
  4. 4个实验,彻底搞懂TCP连接的断开
  5. 让XP恢复文件权限功能
  6. Web前端培训知识分享:2种离线安装npm包的方法
  7. Spring Boot 动态注入的两种方式 1
  8. 领域应用 | HiTA知识图谱 “药品-适应证”图谱数据发布!
  9. 基于Java+SpringMvc+vue+element实现驾校管理系统详细设计
  10. .NET 框架中的字符串(转自MSDN,关于字符串的详细解说!)
  11. 我将其名称作为字符串时如何执行JavaScript函数
  12. C++--第4课 - 函数的升级-下
  13. 危害极大的计算机病毒cih发作的日期是,计算机病毒防治(答案)
  14. 水经注下载地图,导出arcgis瓦片,然后通过geoserver+geowebcache发布地图
  15. python打印什么意思,python语句:print(*[1,2,3]),是什么意思?
  16. C1/C1/C2 カバレッジについて
  17. Excel2016 怎么做数据分类汇总
  18. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型...
  19. Ubuntu下Redis设置密码时配置文件修改密码成功但仍CONFIG GET为空问题解决摸索小记
  20. 两套供左撇子人士使用的鼠标指针(带自动安装inf文件)

热门文章

  1. mac电脑抹掉数据要多久_macbook怎么抹掉所有的数据?
  2. 查询用户所有信息后只需要两个字段的信息_Excel VBA+ADO+SQL入门教程023:OpenSchema获取表信息...
  3. Java构造内部类实例
  4. oracle 杀死过程,ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
  5. kafka消息存储与partition副本原理(二)
  6. python在代码里查看获取模块信息
  7. mysql The server quit without updating PID file异常解决办法
  8. nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法
  9. arraylist切割_JAVA List和Map切割工具详解
  10. python对列表进行去重_Python对列表去重的4种方法