Python数据类型之序列:
字符串,元组,列表
'',(),[]
-列表、元组和字符串都是序列
-序列的两个主要特点是索引操作符和切片操作符
--索引操作符让我们可以从序列中抓取一个特定的项目。从0开始。索引可以是负数,位置是从序列尾开始计算的。
例:
>>> str1='abcde'
>>> str1[0]
'a'
>>> str2='shoplist'
>>> str2[-1]
't'
>>> str2[-2]
's'
>>> str2[-1:-3]
''
>>> str2[-3:-1]
'is'
>>>
--切片操作符让我们能够获取序列的一个切片,即一部分序列。不包含结尾。必须从左到右,比如:str[a:b]中,a,b可以是负数,但a必须大于等于b(等于时取出的是空的)。
例:
>>> str1[1:4]--取的是字符串abcde中的第2(1+1)到第4个(结尾只取到3,3+1)
'bcd'
切片:
1.切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。其中冒号是必须的,数是可选的。
-第一个数(冒号之前)表示切片开始位置,第二个数(冒号之后)表示切到哪里结束,也可以指定步长(第三个数),如果不指定第一个数就从序列首开始,不指定第二个数就停止在序列尾,不指定第三个数步长就是1.
实例:
>>> str='2001BIP2B95820170926212323123456'
>>> str[:]
'2001BIP2B95820170926212323123456'
>>> str[:4]
'2001'
>>> str[12:]
'20170926212323123456'
>>> str[4:12]
'BIP2B958'
>>> str[::]
'2001BIP2B95820170926212323123456'
>>> str[0:33]
'2001BIP2B95820170926212323123456'
>>> str[0:33:2]
'20BPB52102222135'
>>> str[-1]
'6'
>>> str[:-1]
'2001BIP2B9582017092621232312345'
序列的基本操作:
1.len():求序列长度
2.+:连接2个序列
3.*:重复序列元素
4.in:判断元素是否在序列中
5.max():返回最大的值
6.min():返回最小的值
7.cmp(tuple1,tuple2):比较2个序列值是否相同
>>> str='2001BIP2B95820170926212323123456'
>>> len(str)
32
>>> str[:4]
'2001'
>>> str[4:12]
'BIP2B958'
>>> str[12:33]
'20170926212323123456'
>>> a=str[:4]
>>> b=str[4:12]
>>> c=str[12:33]
>>> a+b+c
'2001BIP2B95820170926212323123456'
>>> a*5
'20012001200120012001'
>>> b*5
'BIP2B958BIP2B958BIP2B958BIP2B958BIP2B958'
>>>
>>> '#'*40
'########################################'
>>> str
'2001BIP2B95820170926212323123456'
>>> 'BIP'in str
True
>>> 'ABC' in str
False
>>> max(str)
'P'
>>> min(str)
'0'
>>> strr='12345'
>>> min(strr)
'1'
>>> max(strr)
'5'
>>> cmp(str,strr)
1
>>> strr=1
>>> cmp(str,strr)
1
>>> strr2='12345'
>>> cmp(strr,strr2)
-1
>>> a=1
>>> b=1
>>> cmp(a,b)
0
元组:
和列表十分相似,只不过元组和字符串一样,是不可变的,即不能修改元组
-元组通过圆括号中用逗号分割的项目定义
-元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。
--元组里面可以存储不同类型的值
>>> t=('milo',30,'male')#一般元组,多个元素的
>>> type(t)
<type 'tuple'>
>>> type(t[1])
<type 'int'>
>>> type(t[0])
<type 'str'>
>>> type(t[2])
<type 'str'>
>>>
元组内元素,哪怕只有一个值也必须加逗号
>>> t1=(2,)#单一元素元组必须加逗号,不然程序会认为是一个字符串或数字。。
>>> type(t1)
<type 'tuple'>
>>> t2=(2)
>>> type(t2)
<type 'int'>
>>> t3=()#空元组,括号可以表示元组
>>> type(t3)
<type 'tuple'>
>>> t4=('')#括号里面加引号就表示字符串了,注意区分
>>> type(t4)
<type 'str'>
###:
-元组和字符串类型一样属于序列类型,可通过索引和切片操作
-元组值亦不可变。
>>> tuple1=('张三','男','29')
>>> tuple1[2]=28 #试图去改变元组的值,结果报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> name,gender,age=tuple1
>>> name
'xe5xbcxa0xe4xb8x89'#中文无法显示
>>> gender
'xe7x94xb7'#中文无法显示
>>> age
'29'
>>> a,b,c=1,2,3#同时定义几个变量
>>> type(a)
<type 'int'>
>>> a,b,c=(1,2,3)
>>> type(a)
<type 'int'>