数据结构---序列
Python中序列划分
1.列表 特点 可以被修改类似于C语言中数组
2.元组 特点 不可以被修改
3.字符串 特点 不可以被修改
4、Unicode字符串,buffer对象,xrange对象等等
通用序列操作:分为8种,
1,索引 即通过下标对序列进行访问
示例 ① greeting = 'Hello' 输出
· print greeting[0] ------ 'H'
② print 'Hello'[-1] --------'o'
2.分片;Python重要且具有特点的操作
作用返回序列内一定范围内的元素,可以作为其操作的基础
用法①[A:B]提供两个索引,第一个索引A在返回的序列中第二个索引B不在返回的序列中
②[A:B:C]A,B如上,C步长:用来确定接下来序列中元素的位置
示例
①numbers[1,2,3,4,5,6]
1.print numbers[1:4]
2.print numbers[3:0:-1]
会得到相同的结果 [2,3,4]
②numbers[1,2,3,4,5,6]
print numbers[ : :-1]
[1,2,3,4,5,6]
3.乘
作用新生成一个序列原来的序列会被重复x次
----------输出
示例:①print [42]*5 [42,42,42,42,42]
4.加 乘与加主要用于连接操作
用来进行序列的连接操作
注意:只能用于同类型的连接
---------输出
示例:①print [1,2,3]+[4,5,6] [1,2,3,4,5,6]
②print 'Hello'+' World''Hello world'
③错误 print ‘Hello’ +[1,2,3]错误报告
5.检查成员资格
in 用来检查是否为序列成员,返回BOOL值,True或者False
示例:①print 'sss' in 'sss Get rich now! sss' True
6.计算序列长度
7.8找出最小最大元素
示例:①numbers = [100,34,678]
print len(numbers) 3
print max(numbers)678
print min(2,3)2
序列中的列表
1.list(str) #可以通过将str字符串转换为列表
------输出
示例: print list('hello') ['h','e','l','l','o']
2.‘’.join(somelist)t将列表转换为字符串
示例:print ''.join(['H','i']) Hi
列表中的基本操作
1.元素赋值
示例 x = [1,1,1] x[1] =2 print x [1,2,1]
2.删除元素 通过del操作实现
示例 del x[1] [1,1]
3.分片赋值,可以实现赋值与删除操作
示例:①实现赋值操作
x = list()
x[:] = 'Hero'
print x ['H','e','r','o']
②实现删除操作
x = ['Hero']
x[0:1] = []#删除列表中第一个元素‘Hero’
print x []
③在使用分片赋值时,可以使用与原列表不等长的列表将原列表分片替换
name = list('Perl')
name[1:] = list('ython')
print name ['P','y','t','h','o','n']
列表的方法 -----相当于列表类的函数
1.append 修改原序列,在原列表尾部添加,只能增加一个元素
lst = [1,2,3]
lst.append([4,5])
print lst [1,2,3,[4,5]]
2.extend 在列表的末尾一次性追加另一个序列的多个值,对原有列表进行扩展
----------------------------------------------------------------------------输出
示例:①a = [1,2,3]
b = [4,5,6]
a.extend(b)
print a [1,2,3,4,5,6]
②a = [1,2,3]
a.extend([4,5])
print a [1,2,3,4,5]
list.extend()与‘+’操作符的区别
list.extend()方法会修改原列表
‘+’操作符会返回一个全新的列表
list.extend()与分片操作的替换
a,b为列表
a.extend(b) 与 a[len(a):] = b 得到的结果一样
3.count方法 统计摸个元素在列表出现的次数
示例: x =[1,2,1,1,[1,2]]
print x.count(1)3
4.index方法 : 用来从列表中找出某个值第一个匹配项的索引位置
示例:knights = ['we','are','the','knights','who','say','ni']
print knights.index('who')4
5.insert方法: 用来将对象插入到列表中
list.insert(number,object) #将插入的 对象放到object[number]的位置
示例 numbers = [1,2,3,4,5,6,7]
numbers.insert(3,'four')
print numbers[1,2,3,'four',5,6,7]
6.pop方法:移除列表中的一个元素,并返回该元素的值(默认最后一个)
x.pop() || x.pop(num)
示例 x=[1,2,3]
x.pop()
print x [1,2]
x.pop(0)
print x [2]
7.remove方法 用于移除列表中某个值的第一个匹配项,若不存在于列表中的项不会被移除
示例 x = ['to','be','or','not','to','be']
x.remove('be')
print x ['to','or','not','to','be']
8.reverse方法 将列表中的元素反向存放(改变列表,但不返回值)
示例 x = [1,2,3]
print(x.reverse())[3,2,1]
reversed()函数#不返回列表,返回一个迭代器
示例 x = [1,2,3]
print list(reversed(x))[3,2,1]
9.sort()方法 用于在原位置对列表进行排序,返回None,直接修改原列表
list.object([cmp,key(可选参数), reverse = False]) #可选参数key与reverse
示例 numbers = [5,2,7,9]
print numbers.sort(cmp)[2,5,7,9]
x= ['acde','add']
x.sort(key = len)
print x ['add','acde']
x = [4,6,2,1,7,9]
x.sort(reverse=True)
print x [1,2,4,6,7,9]
sorted()函数#用于任何可以迭代的对象,可用于任何序列
示例 x = [4,6,2,1,7,9]
print sorted(x)[1,2,4,6,7,9]
序列中的元组
元组:也是序列中的一种。唯一的不同是元组不能修改(字符串也是一样)
创建元组:用逗号分隔一些词,或者用()圆括号括起来,必须加上逗号,即使只有一个值
示例 x = 1,2,3
print x(1,2,3)
x = (1,2,3)
print x(1,2,3)
x =(42,)
print x(42,)
tuples()函数以一个序列作为参数并把它转换为元组
print tuples([1,2,3])(1,2,3)
print tuples('a','b','c')('a','b','c')