在Python中最基本的数据结构是序列(sequence),序列中每个元素被分配一个序号---即元素的位置,也称索引。
元组:---不可变序列
Python包括六种序列:列表和元组、字符串、Unicode字符串、buffer对象、xrange对象。
列表和元组的区别在于:列表可以修改,元组不能修改。
在需要操作一组数值的时候,序列很好用,可以用序列表示数据库中一个人的信息---第一个元素是姓名,第二个元素是年龄,.......比如:
edward=['edward gumby',42]
john=['john smith',50]
database=[edward,john]
print database
序列(列表和元组)和映射是两类主要的容器。序列中每个元素都有自己的编号,而映射(字典)中每个元素则是都有自己的名字(键)。
通用序列操作包括:索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)、检查某个元素是否属于序列的成员(成员资格)。Python还有计算序列长度、找出最大元素和最小元素的内建函数。
索引
分片
与索引来访问单个元素类似,分片操作可以用来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现。
索引
分片
与索引来访问单个元素类似,分片操作可以用来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现。
tag='<a href="http://www.python.org">\
python web site\
</a>'
print tag[9:30]
print tag[32:-4]
分片操作对于提取序列的一部分是很有用的。分片操作的实现需要提供两个索引做为边界,第一个索引的元素是包含在分片内的,而第二个则不包含在分片内。
分片内的索引,这两个都可以是空。
tag='<a href="http://www.python.org">\
python web site\
</a>'
print tag[:10]
print tag[10:]
print tag[-10:]
print tag[:-10]
更大的步长 [索引:索引:步长]
number=[0,1,2,3,4,5,6,7,8,9,11,2,12,13,14,13]
print number[::2]
print number[::2]
当步长为负数时,从序列的尾部开始向左提取元素。
序列相加
两种相同类型的序列才能进行操作
序列乘法
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将会被重复x次。
demo='python'*5
print demo
domo_1=[23]*5
print domo_1
注意除法:整数除法运算符(//)
成员资格
database=[
['albert', '1234'],
['dlbert', '4242'],
['smith', '7524'],
['jones', '7524'],
]
username=raw_input('user name')
pin=raw_input('pin coder')
if[username,pin] in database:print 'ACCESS granted'
长度、最小值 、最大值
主要讲解内建函数len、min、max。
len函数返回序列中所包含的元素数量
min,max返回序列中最小,最大元素
Python 的“苦力”
list函数:因为字符串不能像列表一样被修改,所以有时候根据字符串创建列表会很有用
print list("hello")
#输出
['h', 'e', 'l', 'l', 'o']
基本的列表操作:
1、该表列表:元素赋值
>>> x=[1,1,1]
>>> x[1]=2
>>> x
[1, 2, 1]
2、删除元素
>>> name=['Alice','beth','cecil','dee-dee','earl']
>>> del name[2]
>>> name
['Alice', 'beth', 'dee-dee', 'earl']
3、分片赋值(总之分片赋值很强大)
>>> name=list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:]=list('ar')
>>> name
['P', 'e', 'a', 'r']
分片赋值时候,可以使用与原序列不等长的序列将分片替换
>>> foo=list('Perl')
>>> foo[1:]=list('ython')
>>> foo
['P', 'y', 't', 'h', 'o', 'n']
4列表方法
方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象。调用方法:对象.方法(参数)
下面讲解列表提供的方法:
a、append 用于在列表末尾追加新的对象。
lst=[1,2,3]
lst.append(5)
print lst
b、count count方法统计某个元素在列表中出现的次数
lst=['to','be','or','not','to','be']
print lst.count('to')
c、extend 可以在列表的末尾一次性追加另一个序列中的多个值。即可以用新的序列来扩展原有的列表:
lst=['to','be','or','not','to','be']
que=['that','is','a','question']
lst.extend(que)
print lst
d、index 用于从列表中找出某个值第一个匹配项的索引位置:
knight=['who','are','you','?','I','am','you','sister']
print knight.index('you')
e、insert 用于将对象插入到列表中
number=[1,2,3,4,5,7,8]
number.insert(5,'six')
print number
f、pop 移除列表最后一个元素,并返回该元素的值;
num=[1,2,3,4,5,6]
print num.pop()
print num
g、remove 方法用于移除列表中某个值的第一个匹配项:
lst=['to','be','or','not','to','be']
lst.remove('be')
print lst
h、reverse 方法将列表中的元素反向存放
lst=['to','be','or','not','to','be']
lst.reverse()
print lst
i、sort 在原位置对列表进行排序。其实质已经更改了列表,而不是简单的返回。
lst=[2,4,2,1,6,8,3,0]
lst.sort()
print lst
获取已排序列表的副本的方法是:sorted函数
x=[4,2,7,6,8,1]
y=sorted(x)
print y
print x
另外一种方法:
#--coding:utf-8--
x=[4,2,7,6,8,1]
y=x[:]
#此处并不是把y=x,y=x相当于x,y同时指向一个列表了。
y.sort()
print y
print x
元组:---不可变序列
创建元组的方法很简单,如果你用逗号分隔了一些值,那么你就自动创建了元组。
>>> 3*(40+2,)
(42, 42, 42)
tuple函数
次函数的功能是与list函数基本上是一致的:以一个序列做为参数并把他转换为元组。
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')