转载:索引与分片 plus
[Python笔记]序列(一)索引、分片
Python包含6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。
这些序列支持通用的操作:
- 索引
索引是从0开始计数;当索引值为负数时,表示从最后一个元素(从右到左)开始计数。这里列举几个例子:
#字符串字面值可以直接使用索引,不需要专门的变量引用
>>> 'Hello World!'[0]
'H'
>>> 'Hello World!'[11]
'!'
#注意越界
>>> 'Hello World!'[12]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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 "<stdin>", line 1, in <module>
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 "<stdin>", line 1, in <module>
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 "<stdin>", line 1, in <module>
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进行初始化一个序列。
转载:索引与分片 plus的更多相关文章
- python--getitme\setitem 支持索引与分片
1.想要自己定义的python对象支持索引与分片操作就要重载__getitem__\__setitem__这两个方法. 2.__getitme__(self,index) 这里的index参数可能类型 ...
- elasticsearch 集群、节点、索引、分片、副本概念
原文链接: https://www.jianshu.com/p/297e13045605 集群(cluster): 由一个或多个节点组成, 并通过集群名称与其他集群进行区分 节点(node): 单个 ...
- [Python笔记]序列(一)索引、分片
Python包含6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 这些序列支持通用的操作: 索引 索引是从0开始计数:当索引值为负数时,表示从最后一个元素( ...
- 剖析ElasticSearch核心概念,NRT,索引,分片,副本等
ElasticSearch 的核心概念 Near RealTime(NRT) 近实时 近实时有两种意思,一种是从写入数据到可以被搜索到有一个小延迟(大概一秒),还有一种就是基于ElasticSearc ...
- Elasticsearch之如何合理分配索引分片
大多数ElasticSearch用户在创建索引时通用会问的一个重要问题是:我需要创建多少个分片? 在本文中, 我将介绍在分片分配时的一些权衡以及不同设置带来的性能影响. 如果想搞清晰你的分片策略以及如 ...
- Python:字符串的分片与索引、字符串的方法
这是关于Python的第3篇文章,主要介绍下字符串的分片与索引.字符串的方法. 字符串的分片与索引: 字符串可以用过string[X]来分片与索引.分片,简言之,就是从字符串总拿出一部分,储存在另一个 ...
- Python入门:字符串的分片与索引、字符串的方法
这是关于Python的第3篇文章,主要介绍下字符串的分片与索引.字符串的方法. 字符串的分片与索引: 字符串可以用过string[X]来分片与索引.分片,简言之,就是从字符串总拿出一部分,储存在另一个 ...
- elasticsearch indices.recovery 流程分析(索引的_open操作也会触发recovery)——主分片recovery主要是从translog里恢复之前未写完的index,副分片recovery主要是从主分片copy segment和translog来进行恢复
摘自:https://www.easyice.cn/archives/231 elasticsearch indices.recovery 流程分析与速度优化 目录 [隐藏] 主分片恢复流程 副本分片 ...
- Elasticsearch-02-入门:集群、节点、分片、索引及常用API
2. 基础入门 2.1 重要概念 2.1.1 集群和节点 1)cluster Elasticsearch集群是由一个或多个节点组成,通过其集群名称来进行唯一标识.节点在搜索到集群之后,通过判断自身的 ...
随机推荐
- sqli-labs(十三)(hpp)
第二十九关 这关说的是有waf,其实只是模拟waf的场景,就是说waf处理的变量和后台程序接受的变量不一致. 考验的参数污染,具体可以参考其他文章关于HPP的解释. 先看源码吧: 输入?id=1&am ...
- FZU 1683 纪念SlingShot(矩阵水)
纪念SlingShot [题目链接]纪念SlingShot [题目类型]矩阵水 &题解: 这代码调了十多分钟,结果是Mul没返回值,好zz啊. 令sum(n)=sum(n-1)+f(n) 那么 ...
- Nodejs中原生遍历文件夹
最近在听老师讲的node课程,有个关于把异步变为同步读取文件夹的知识点做一些笔记, 让迭代器逐个自执行.
- 在linux中配置mysql的过程
以华为企业云中的CentOS 7 为例. 1. 首先要安装相应的包,这个使用各种linux发行版的包管理工具就行,不再赘述.有一点需要注意,现在许多linux发行版将mariadb作为MySQL的默认 ...
- verdi bin工具
verdi安装目录下会有很多小的工具: 1)波形类型转换类:fsdb2saif,fsdb2vcd, log2fsdb(只能增加某些周期性信号,从log txt直接产生fsdb波形,适合于siloti的 ...
- 【Hadoop学习之十二】MapReduce案例分析四-TF-IDF
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 概念TF-IDF(term fre ...
- caffe生成voc格式lmdb
要训练ssd基本都是在liu wei框架下改,生成lmdb这一关照葫芦画瓢总遇坑,记录之: 1. labelmap_voc.prototxt要根据自己的分类修改,比如人脸检测改成这样: item { ...
- 富文本编辑器kindeditor插件
官网:http://kindeditor.net/doc.php 步骤
- 决策树算法——ID3
决策树算法是一种有监督的分类学习算法.利用经验数据建立最优分类树,再用分类树预测未知数据. 例子:利用学生上课与作业状态预测考试成绩. 上述例子包含两个可以观测的属性:上课是否认真,作业是否认真,并以 ...
- 转:C#串口编程
本文用来简单介绍一下C#串口编程的知识,主要以实例为内容. 凡是串口设备和计算机交互的时候都用到串口,在C#中我们如何来操作串口呢? 大话串口工作原理 实际串口是用来和外部设备进行交换数据的,我抽象出 ...