python中序列
在新学习python的过程中接触到了序列一词,特地进行博客记录。
- python序列
python中的序列,指的是在内存中连续存储多个值,按一定顺序排序,能根据索引访问序列中元素。序列类型有:字符串(str)、列表(list)、集合(set)、元组(tuple)和字典(dict),但特殊的是,集合和字典不支持索引、切片、相加和相乘的操作。 - 序列的索引
序列的索引是根据标号,通常形式为:
seq[index]
和我们c/c++相同的是,索引都是从0开始,向后递增到n-1结束,不过不同的是,python支持逆序索引,就是从最后面,即-1开始索引,向后递减。
集合是无序、不重复序列,所以不支持寻常索引;字典则是键值对结构,访问时是根据对应键得出相应值,同样不支持索引。
3. 序列的切片
切片是范围访问序列的方法,通过划定范围,可以根据现有序列得到新序列。形式如下:
seq[start:end:step]
start,表示起始索引值;
end,结束索引值(不包含此位置),你可以直接理解为第end个元素;
step,步长,指得到的新序列中元素在旧序列中间隔。
例子:
>>> a=list(range(10))#range函数得到从0到10的列表a
>>> a #输出列表a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b=a[0:6:2]#切片得到列表b,从0到6前一个元素(或者你看成第六个),步长为2
>>> b #输出列表b
[0, 2, 4]
具体使用还有:
>>> a=list(range(6))
>>> a
[0, 1, 2, 3, 4, 5]
>>> a[0:] #获取a列表从0开始的切片,结束默认为最后
[0, 1, 2, 3, 4, 5]
>>> a[0:10] #获取a列表从0开始到10为终结的切片(end可大于实际值)
[0, 1, 2, 3, 4, 5]
>>> a[:10] #获取a列表持续到10的切片,start默认为0
[0, 1, 2, 3, 4, 5]
>>> a[0:10:-1] #当步长为负值,即从后面往前面索引,前面的从start到end却是顺序,所以没有值
[]
>>> a[5:0:-1] #从5到0前面一个,步长为-1,逆序
[5, 4, 3, 2, 1]
此外python还有内置切片类(slice),不过这个是后话,此处不叙。
4. 序列的相加
序列间可用"+"相连接
>>> a
[0, 1, 2, 3, 4, 5]
>>> a + [0,1,2]
[0, 1, 2, 3, 4, 5, 0, 1, 2]
>>>
- 序列的相乘
和上面的等同,用’*'达到多个序列的效果
>>> a*3
[0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
>>>
- 序列通用操作
len(),获取长度
max(),或许序列最大元素,根据ASCII进行大小比较
min(),获取序列最小元素,根据ASCII进行大小比较
使用None创建定长空序列:
>>> b=10*[None] #简单来说,就是b是列表[None]乘10操作所得
>>> b
[None, None, None, None, None, None, None, None, None, None]
in,检查序列是否包含某元素
>>>x in seq
>>>True#或者False
简单记录到此结束,上述仅为现下所学,如有不足,请指出,谢谢。