python类型-序列
注:本文档主要是学习《Python核心编程(第二版)》时做的资料整理。
1.序列
序列的成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,包括字符串(普通字符串和Unicode字符串)、列表和元组类型。下标偏移量从0开始到总元素-1结束。

1.1操作符
1.1.1成员关系操作符
成员关系操作符:用来判断一个元素是否属于一个序列。in/not in操作符返回值一般就是True/False,语法为: 对象 [not] in 序列
>>> list = [1, 2, 3]
>>> 1 in list
True
>>> 4 in list
False
1.1.2连接操作符
允许把一个序列和另一个相同类型的序列做连接sequence1 + sequence2,这种方法不是最高效的;
>>> str1 = 'hello'
>>> str2 = 'world'
>>> str1 + str2
'helloworld'
对于字符串,可将所有的子字符串放在一个列表或可迭代对象中,然后调用join方法来把所有的内容连接在一起以节约内存;对列表来说,可用列表的extend()方法来把两个或者多个列表对象合并。
>>> str3 = ''
>>> str3.join([str1, str2])
'helloworld'
1.1.3重读操作符(*)
sequence * copies_int,copies_int必须是一个整型,不能是长整型。该操作符返回一个新的包含多份原对象拷贝的对象。
>>> s1 = 'ha'
>>> s1*3
'hahaha'
1.14切片操作符([], [:], [::])
访问某一个数据元素的语法:sequence[index]。范围从0到偏移值最大值(比序列长度少一),用len()函数可以得到序列长度,实际的范围是0<= index <= len(sequence)-1。使用负数索引,范围是-1到序列的负长度-len(sequence),-len(sequence) <= index <= -1
>>> print ('Faye', 'Leanna', 'Daylen')[1]
Leanna
访问多个元素:sequence[starting_index: ending_index],可得到从起始索引到结束索引之间的一个"片"元素。
1.15用步长索引来进行扩展的切片操作
sequence[starting_index: ending_index, step]
>>> s = 'abcdefghijk'
>>> s[::-1]
'kjihgfedcba'
>>> s[::2]
'acegik'
>>>
>>> a = 'abcde'
>>> for i in [None] + range(-1, -len(a), -1):
... print a[:i]
...
abcde
abcd
abc
ab
a
|
序列操作符 |
作用 |
|
seq[ind] |
获取下标为ind的元素 |
|
seq[ind1:ind2] |
获取下标从ind1到ind2间的元素集合 |
|
seq*expr |
序列重复expr次 |
|
seq1 + seq2 |
连接序列seq1和seq2 |
|
obj in seq |
判断obj元素是否包含在seq中 |
|
obj not in seq |
判断obj元素是否不包含在seq中 |
1.2序列内建函数
1.2.1类型转换函数
内建函数list()、str()和tuple()被用作在各种类型之间转换,这些函数都是工厂函数,将对象作为参数,并将其内容(浅拷贝)到生成的对象中。
一旦一个对象被建立,就不能改变其身份或类型,把一个列表对象传给list()函数,会创建一个这个对象的浅拷贝,然后将其插入新的列表中。所谓浅拷贝就是只拷贝这个对象的索引,而不是创建了一个对象。
|
函数 |
含义 |
|
list(iter) |
把可迭代对象转换为列表 |
|
str(obj) |
把obj对象转换为字符串(对象的字符串表示法) |
|
unicode(obj) |
把对象转换为Unicode字符串(使用默认编码) |
|
basestring() |
抽象工厂函数,其作用仅仅是为str和Unicode函数提供父类,所以不能被实例化,也不能被调用 |
|
tuple(item) |
把一个可迭代对象转换为一个元组对象 |
>>> obj = list(x for x in range(10))
>>> obj
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> str(obj)
'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'
>>> tuple(obj)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> unicode(obj)
u'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'
1.2.2可操作函数
序列类型可用的内建函数如下:
|
函数名 |
功能 |
|
enumerate(iter) |
接受一个可迭代对象作为参数,返回一个enumerate对象(同时也是一个迭代器),该对象生成由iter每个元素的index值和item值组成的数组 |
|
len(seq) |
返回seq的长度 |
|
max(iter, key=None) or max(arg0, arg1,…, key=None) |
返回iter或(arg0, arg1,…)中的最大值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数 |
|
min(iter, key=None) or min(arg0, arg1,…, key=None) |
返回iter或(arg0, arg1,…)中的最小值,如果指定了key,这个key必须是一个可以传给sort()方法的,用于比较的回调函数 |
|
sorted(iter, func=None, key=None, reverse=False) |
接受一个可迭代对象,返回一个有序的列表,可选参数func、key和reverse的含义跟list.sort()内建函数的参数含义一样 |
|
sum(seq, init=0) |
返回seq和可选参数init的总和,其效果等同于reduce(operator,add,seq,init) |
|
zip(it0, it1, … , itN) |
返回一个列表,其第一个元素是it0、it1…这些元素的第一个元素组成的一个元组,第二个。。。依此类推 |
后面详细介绍字符串、列表和元组时再详细介绍这些函数。
python类型-序列的更多相关文章
- python类型-序列-字符串
python中单引号和双引号的含义是一样的.字符串是一种直接量或者说是一种标量,是不可变类型,字符串是由独立的字符组成的,并且这些字符可以通过切片操作顺序的访问. python实际有三类字符串:通常意 ...
- python类型-序列-元组
元组是一种不可变类型,元组可用作一个字典的key. 1.创建一个元组并进行赋值 atuple = (123, 'abc', ('inner', 'tuple'), 7-9j) 2.访问元组中的值 元组 ...
- python类型-序列-列表
列表类型也是序列式的数据类型,可通过下标或者切片操作来访问某一个或某一块连续的元素. 列表的元素是可变的,可包含不同类型的元素,列表类型的元素可以是另一个序列类型. 1.创建列表类型数据并赋值 列表使 ...
- Python基本序列-字典
Python 基本序列-字典 字典(dict)是"键-值 对"的无序可变序列,字典中的每个元素包含两部分,"键"和"值". 字典中的&quo ...
- Python常见序列详解
一.Python中序列的分类 常见序列类型包括字符串(普通字符串和unicode字符串),列表和元组.所谓序列,即成员有序排列,可通过下标访问. 二.Python序列通用操作 下面我们将分别以字符串. ...
- python类型检测最终指南--Typing模块的使用
正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...
- Python基础---序列对象
一.序列简介 数据结构是通过某种方式组织在一起的元素的集合. 容器(Container)是一种Python的数据结构,基本上是包含其他对象的任意对象.序列和映射(如字典)是两类主要的容器.集合(Set ...
- python类型学习
python类型学习 标准类型 数字 Integer 整型 Boolean 布尔型 Long integer 长整型 Floating point real numer 浮点型 Complex nu ...
- C Python类型互换
从Python到C的转换用PyArg_Parse*系列函数,int PyArg_ParseTuple():把Python传过来的参数转为C:int PyArg_ParseTupleAndKeyword ...
随机推荐
- Linux 内核总线注册
如同我们提过的, 例子源码包含一个虚拟总线实现称为 lddbus. 这个总线建立它的 bus_type 结构, 如下: struct bus_type ldd_bus_type = { .name = ...
- 手把手教你基于koa2,mongoose实现增删改查
初始化项目 npm init -y 先安装一波乱七八糟的依赖插件(需要具备一定的koa2知识,至于mongoDB自行百度安装教程),模板引擎我使用的是art-template(据说是性能最好的,而且是 ...
- ZR普转提2
ZR普转提2 A 谢谢刁神教我A题 刚开始读错题了,以为是一个不可做的数位DP,然后就暴力滚粗 直到问了问刁神,发现自己题意是错的 然后成了比较简单的题目 直接暴力枚举每一位填什么,剩下的位数的数字都 ...
- C++Review5_Swap交换
面试中可能会问到交换两个变量的值有几种实现方式,对这方面有一定了解还是有必要的,简单罗列一下几种方式,具体介绍查看参考链接: 1.中间变量:->这个最常见了 2.加减法: 3.异或法: 4.sw ...
- FPGA之乒乓操作
1.乒乓操作原理 乒乓操作是一个主要用于数据流控制的处理技巧,典型的乒乓操作如图所示: 外部输入数据流通过“输入数据选择控制”模块送入两个数据缓冲区中,数据缓冲模块可以为任何存储模块,比较常用的存储单 ...
- Python 类的常用内置方法
类的内置方法(魔法方法): 凡是在类内部定义,以__开头__结尾的方法,都是类的内置方法,类的内置方法,会在满足某种条件下自动触发. 1.1__new__ __new__:在___init__触发前, ...
- leetcode.1275找出井字棋的获胜者
A 和 B 在一个 3 x 3 的网格上玩井字棋. 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上.第一个玩家 A 总是用 "X" 作为棋子, ...
- 【题解】P3645 [APIO2015]雅加达的摩天楼(分层图最短路)
[题解]P3645 [APIO2015]雅加达的摩天楼(分层图最短路) 感觉分层图是个很灵活的东西 直接连边的话,边数是\(O(n^2)\)的过不去 然而我们有一个优化的办法,可以建一个新图\(G=( ...
- 机器学习回顾篇(13):集成学习之AdaBoost
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态
1. 简介 今天北京下的雪好大好美啊!!!哎呀,忘记拍照片了,自己想象一下吧.言归真传,今天还是开始pytest的学习和修炼,上一篇写完后群里反响各式各样的,几家欢乐几家愁,有的高兴说自己刚好要用到了 ...