初识Python(4)__Python序列

序列

序列包含:字符串,列表和元组

序列基本操作符



索引:seq[ind] 获得下标为ind 的元素

分片( [], [:], [::] ):seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合

重复操作符( * ):seq * expr 序列重复expr 次

连接操作符( + ):sequence1 + sequence2,该表达式的结果是一个包含sequence1 和sequence2 的内容的新序列

判断成员资格:obj in/not in seq 判断obj 元素是否包含在seq 中,返回True或False

求长度:len()

最大值最小值:max() min()



关于索引:



sequence[index]

sequence 是序列的名字,index 是想要访问的元素对应的偏移量.偏移量可以是正值,范围从0 到偏移最大值(比序列长度少一),用len()函数(下一节会讲),可以得到序列长度,实际的范围是 0 <= inde <= len(sequece)-1 .另外,也可以使用负索引,范围是 -1 到序列的负长度,-len(sequence), -len(sequence) <= index <= -1.正负索引的区别在于正索引以序列的开始为起点,负索引以序列的结束为起点.



关于切片:



sequence[starting_index:ending_index]

通过这种方式我们可以得到从起始索引到结束索引(不包括结束索引对应的元素)之间的一"片"元素.起始索引和结束索引都是可选的,如果没有提供或者用None 作为索引值,切片操作会从序列的最开始处开始,或者直到序列的最末尾结束.用步长索引来进行扩展的切片操作序列的最后一个切片操作是扩展切片操作,它多出来的第三个索引值被用做步长参数。s[::-1] # 可以视作"翻转"操作



序列类型转换工厂函数



list(iter):把可迭代对象转换为列表

str(obj): 把obj 对象转换成字符串(对象的字符串表示法)

unicode(obj): 把对象转换成Unicode 字符串(使用默认编码)

basestring(): 抽象工厂函数,其作用仅仅是为str 和unicode 函数提供父类,所以不能被实例化,也不能被调用tuple(iter): 把一个可迭代对象转换成一个元组对象



 

字符串

特性:通过加引号(单引号,双引号,三引号)创建,不可变类型


格式


描述


%%


输出百分号标记


%c


字符及其ASCII码


%r


优先用repr()函数进行字符串转换


%s


优先用str()函数进行字符串转换


%d


有符号整数(十进制)


%u


无符号整数(十进制)


%o


无符号整数(八进制)


%x


无符号整数(十六进制)


%X


无符号整数(十六进制大写字符)


%e


浮点数字(科学计数法)


%E


浮点数字(科学计数法,用E代替e)


%f


浮点数字(用小数点符号)


%g


浮点数字(根据值的大小采用%e或%f)


%G


浮点数字(类似于%g)


%p


指针(用十六进制打印值的内存地址)


%n


存储输出字符的数量放进参数列表的下一个变量中


辅助符号


说明


*


定义宽度或者小数点精度


-


用做左对齐


+


在正数前面显示加号(+)


<sp>


在正数前面显示空格


#


在八进制数前面显示零(0),在十六进制前面显示“0x”或者“0X”(取决于用的是“x”还是“X”)


0


显示的数字前面填充“0”而不是默认的空格


m.n


m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

注意:辅助符号要在百分号(%)和格式化符号之间。

辅助符号举例:

Num1 = 108

print("%#X" % Num1)

Num2 = 234.567890

print("%.2f" % Num2)

输出:

0X6C

234.57

原始字符串操作符( r/R )

Python中的原始字符串以r开头,使用原始字符串可以避免字符串中转义字符带来的问题。

例如写路径时 path = ‘c:\noway‘,此时用 print path,其结果为:
c:
oway

如果用原始字符串 path = r‘c:\noway‘,则 print path,其结果为:
c:\noway


列表

l  列表是序列对象,可包含任意的Python数据信息,如字符串、数字、列表、元组等

l  列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加、修改、删除等操作

l  可以通过list(seq)函数把一个序列类型转换成一个列表

列表是由方括号[ ]来定义的,当然,你也可以用工厂方法list()来创建。

>>> aList = [123, ‘abc‘, 4.56, [‘inner‘, ‘list‘], 7-9j]

>>> list(‘foo‘)
[‘f‘, ‘o‘, ‘o‘]

列表方法:



1.list.append(x),在list列表尾部追加单个对象x,使用多个参数会引起异常

2. list.count(x),返回对象x在list列表中出现的次数

3. list.extend(L),将L列表中的内容添加到list列表中,返回None

4. list.index(obj,i=0,j=len(list)):返回list[k]==obj的k值,并且k的范围在 i<=k<j,否则引发ValueError异常

5. list.insert(i,x),在索引为i的元素前插入对象x,如list.insert(0,x)在第一项前插入对象,返回None

6. list.pop(x),删除列表中索引为x的表项,并返回该表项的值,若未指定索引,pop返回列表最后一项

7. list.remove(x),删除列表中匹配对象x的第一个元素,匹配元素时产生异常,返回None

8. list.reverse(),颠倒列表元素的顺序

9. list. sort([cmp[, key[, reverse]]]),对列表排序,返回none,bisect模块可用于排序列表项的添加和删除



序列类型函数



Len():对字符串来说len()返回字符串的长度,就是字符串包含的字符个数.对列表或者元组来说,它会像你想像的那样返回列表或者元组的元素个数,容器里面的每个对象被作为一个项来处理.

Max()and min()

Sorted() and reversed():排序

Enumerate() and zip():

Sum():求和

List() and tuple():list()函数和tuple()函数接受可迭代对象(比如另一个序列)作为参数,并通过浅拷贝数据来创建一个新的列表或者元组它们用于在两种类型之间进行转换,比如你需要把一个已有的元组转成列表类型的(然后你就可以修改它的元素了),或者相反.



元组

1、相当于不可变的列表,不能进行更新内容和顺序

2、当处理一组对象时,这个组默认是元组类型

3、所有的多对象,逗号分隔的,没有明确用符号定义的这些都默认为元组类型

创建元组:

>>>atuple = (‘1’,’b’,’a’)

>>> tuple(‘bar‘)
(‘b‘, ‘a‘, ‘r‘)

>>>atuple = (‘1’,)  #创建单个元素的元组,要加个“,”号

关于元组操作:



1.   无法向元组添加元素。元组没有  append() 或 extend() 方法。

2.   不能从元组中删除元素。元组没有 remove() 或 pop()  方法。

3.   可以 在元组中查找元素,由于该操作不改变元组。

4.   还可以使用 in 运算符检查某元素是否存在于元组中。



更新元组



跟数字和字符串一样,元组也是不可变类型,就是说你不能更新或者改变元组的元素,前面,我们是通过现有字符串的片段再构造一个新字符串的方式解决的,对元组同样需要这样。

aTuple = (123, ‘abc‘, 4.56, [‘inner‘, ‘tuple‘], 7-9j)
aTuple = aTuple[0], aTuple[1], aTuple[-1]
print(aTuple)
输出:
(123, ‘abc‘, (7-9j))

tup1 = (12, 34.56)
tup2 = (‘abc‘, ‘xyz‘)
tup3 = tup1 + tup2
print(tup3)
输出:
 (12, 34.56, ‘abc‘, ‘xyz‘)


那么元组有什么好处呢?



•   元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。

•   对不需要改变的数据进行“ 写保护” 将使得代码更加安全。使用元组替代列表就像是有一条隐含的 assert 语句显示该数据是常量,特别的想法(及特别的功能)必须重写。(??)

•   一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。

•   元组作为很多内建函数和方法的返回值存在。

参考:http://hi.baidu.com/wuxinzy/item/c2c3cd428c99aa01896d10a7



关于列表和列表,元组和元组之间的比较:



1. 对两个列表的元素进行比较.

2. 如果比较的元素是同类型的,则比较其值,返回结果.

3. 如果两个元素不是同一种类型,则检查它们是否是数字.

a. 如果是数字,执行必要的数字强制类型转换,然后比较.

b. 如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")

c. 否则,通过类型名字的字母顺序进行比较.

4. 如果有一个列表首先到达末尾,则另一个长一点的列表"大".

5. 如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就是说返回一个0.




时间: 2024-10-09 10:21:43

初识Python(4)__Python序列的相关文章

[Python学习]——序列(1)——初识Python中的序列

我们讲的python中的序列包括:1. 字符串(多个字符组成的一个序列)2. 列表3. 元组 #列表和元组的异同? list=[1,2,3] print type(list) tuple=(1,2,3) print type(tuple) #<相同点> 列表和元组都是容器,可以包含任意类型的元素(甚至是包含一个序列) 列表和元素也都包含元素的顺序 #<差别> 列表是可变的,元组是不可变的 所以通常,在你有一些不确定长度的相同类型队列时使用列表 在已知元素数量的情况下用元组 #<

初识Python(8)__Python错误和异常

错误和异常 ################################################################################## 参考:http://blog.csdn.net/fcoolx/article/details/4202872 http://blog.163.com/[email protected]/blog/static/279729562008719384580/ https://docs.python.org/2/library

初识Python(9)__Python函数

函数 参考 : ######################################################### http://www.w3cschool.cc/python/python-functions.html http://developer.51cto.com/art/200809/88052.htm http://www.pythondoc.com/pythontutorial27/controlflow.html#tut-functions http://see

初识Python(3)__Python 数字

数字类型 关于删除数字对象 按照Python 的法则, 你无法真正删除一个数值对象, 你仅仅是不再使用它而已.如果你实际上想删除一个数值对象的引用, 使用 del 语句 Python支持四种数字类型 整型:通常被称为只是整数或整数,是正或负整数,不带小数点. 长整型:非常长的整型,在数字最后有L,如“51924361L” 浮点数:双精度浮点数,浮点数值通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法).在e和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)

初识Python(5)__Python映射和集合

映射类型:字典 字典:可以快速查到某个特定的词语(键),从而找到它的定义(值).(没有顺序)键和值之间用冒号(:)隔开,项之间用逗号(,)隔开,字典由{}括起来 >>> dict1 = {} #空字典 >>> dict2 = {'name': 'earth', 'port': 80} #用{}创建 >>> dict1, dict2 ({}, {'port': 80, 'name': 'earth'}) >>> fdict = dict

初识Python(2)__Python 对象

Python 对象 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性(特征)和行为来描述一个对象的.比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征.它会汪汪叫,会摇尾巴等是它的行为. 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或特征). 在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(met

初识Python(1)__Python基础

Python基础 一.  注释(#) Python注释语句是用“#”字符开始,注释可以在一行的任何地方开始,解释器会忽略掉该行 # 之后的所有内容. 单行注释:   1 print ‘hello, world!’ #打印 hello,world 多行注释:多行注释用三引号’’’将需要注释的部分括起来,例如: 1 ’’’ 2 Hello ,world. 3 I’m Jay, and l like python. 4 ’’’ 3. 中文注释:需要在文件头写上: #coding=gbk 或者 #cod

初识Python(10)__Python模块

模块 什么是模块 自我包含并且有组织的代码片断就是模块( module ) 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件.每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名.模块可以由两个语句和一个重要的内置函数进行处理.import: 使客户端(导入者)以一个整体获取一个模块.from:容许客户端从一个模块文件中获取特定的变量名.reload:在不中止Python程序的情况下,提供了一个重新载

Python学习三---序列、列表、元组

一.序列 1.1.序列概念 pythn中最基本的数据结构是序列(sequence). 序列中每个元素被分配一个序号-元素索引,第一个索引是0,第二个是1,以此类推.类似JAVA中数组和集合中的下标. 从后向前,最后一个索引是-1,-2,.... python包含6种内建序列.最常用的两种类:列表和元组,其它内奸序列类型有字符串.Unicode字符串.buffer对象和xrange对象. 列表和元组的主要区别在于,列表可以修改,元组不能修改. 添加元素就用列表. 由于 一些原因不能修改时就用元组.