- 序列的通用方法
- 数据结构
- 列表list
- 元祖stuple
- 字符串str
- 字典dict
序列
Python包含6种内置序列:列表、元祖、字符串、Unicode字符串、buffer对象、xrange对象
它们所包含一些通用的特性,如:
1.索引:从0开始,-1表示最后一个元素
2.分片:例tag=['Jock','Tom','Payt'] tag[1:2] 结果['Tom'],可以用负数,表示从后面开始,
对于b=tage,这表示是指向同一个位置,而不是复制,如果要复制的话,用b=tage[:]
分片可以规定,每几次取一次值,格式为 [1:6:3] 表示每三次取一次值
3.序列相加:
a=[1,2,3,4,5] b=[3,4,5,6,7] c=a+b print(c) print(a) print(b) 结果: [1, 2, 3, 4, 5, 3, 4, 5, 6, 7] [1, 2, 3, 4, 5] [3, 4, 5, 6, 7]从结果可以得出: 原始的数据并没有消失,而是产生新的列表
4.序列批量生成a=['asd'] print(a*5)结果: ['asd', 'asd', 'asd', 'asd', 'asd']
5.序列计算长度与找出最大元素max和最小元素min
a=['1','2','5','2623632'] print(len(a)) print(max(a)) print(min(a)) 结果: 4 5 1 对于字符串的判别,要自己写规则 max('ah', 'bf', key=lambda x: x[1])
数据结构
一、列表list
列表属于序列,因此对于上述说的方法它依然适用,当然它也有一些自己的方法,如
1.改变列表
a=[1,2,3,4,5] #赋值 a[1]=5 print(a) #删除 del a[1] print(a) a=[1,2,3,4,5] #分片赋值 a[1:]=list('python') print(a) #插入 a=[1,2,3,4,5] a[1:1]=[1,2,3] print(a)2.append()在列表末尾追加新的对象
a=[1,2,3,4,5] b=[4,5,6,7] a.append(b) print(a) 结果:[1, 2, 3, 4, 5, [4, 5, 6, 7]]
3.extend()在列表的尾部追加另一个列表的多个值
a=[1,2,3,4,5] b=[4,5,6,7] a.extend(b) print(a) 结果:[1, 2, 3, 4, 5, 4, 5, 6, 7]
4.index()找出某个值第一次匹配性的索引位置
a=[1,2,3,4,5] b=[4,5,6,7] print(a.index(4)) 结果:35.insert()将对象插入到列表中
6.pop() 移除列表中的一个元素(默认是最后一个)a=[1,2,3,4,5] b=[4,5,6,7] a.insert(1,b) print(a) #要插入的对象.insert(插入的位置,插入的值) #没有返回值,对元对象进行的改变a=[1,2,3,4,5] b=[4,5,6,7] print(a.pop()) print(a) b.pop(1) print(b) #pop(要移除的位置) 返回移除元素的位置pop()方式是唯一一个既能修改列表又返回元素值(除了None)的列表方法,返回的是移除的值
7.remove()移除列表中某个值的第一个匹配项
a=[1,2,3,4,5,5] b=[4,5,6,7] a.remove(5) print(a)8.reverse()将列表中的元素反向存放,sort()在原位置对列表进行排序,返回值为None,sorted,返回一组新的列表
a=[2315,6,8,4,5,878,1,2,8] a.reverse() print(a) a.sort() #sort()默认是从小到大排列的,也可以自己设置排序规则 print(a) b=[2315,6,8,4,5,878,1,2,8] c=sorted(b) #b原来的值并不会改变 print(b) #c排序后的list print(c)9.高级排序,sort()提供两个可选参数key和reverse,key必须提供一个在排序过程中使用的函数,为每个元素创建一个键,根据键来排序,reverse是一个简单的布尔值,指明列表是否进行反向排序
a=['a','asf','asfasf','d','as'] a.sort( key= len)#len不能对int类型的数值进行排序 print(a) b=['a','asf','asfasf','d','as'] b.sort(key=len, reverse=True) print(b)
#Python3 取消了cmp函数,所以自定义函数的排序有所改变 from aiohttp.hdrs import AGE a=[4,12,12,4,2,6,7] #如果对象是数字、字符串可以使用 a.sort(key=lambda e:e) print(a) b=['asf','csasf','bsdasd','as','z'] b.sort(key=lambda e:e) print(b) class Student: def __init__(self,name,grade,age): self.name=name self.grade=grade self.age=age def __repr__(self): return repr((self.name,self.grade,self.age)) student_object=Student student_object=[ Student('john','A',15), Student('jane','B',12), Student('dave','B',10), ] print(sorted(student_object,key=lambda student:student.age)) #可以引入itemgetter,attrgetter from operator import itemgetter,attrgetter #根据属性值 print(sorted(student_object,key=attrgetter('age')))