在python中有六种内建的序列:列表、元祖、字符串、Unicode字符串、buffer对象和 xrange对象。
通用序列操作:
1. 索引(indexing)
2. 分片(slicing)
3. 加(adding)
4. 乘(multiplying)
5. 检查某个元素是否属于这序列的index(in)
6. 计算序列的长度(len)
7. 找出最大元素和最小元素(max/min)
本篇将介绍其中的列表,以下从列表定义、增删改查、列表生成式三个方面进行总结
1. 列表定义
列表为Python内置数据类型,用[]表示,可以修改
2. 列表的增、删、改,查
(1) 增
append()
extend() #必须在列表尾部拼接另一个链表
insert() #指定索引位置插入字符
(2) 删
pop() #删除末尾的元素
remove() #指定值进行删除
del() #用索引和切片进行删除
clear() #清楚列表中的所有元素,保留列表这个对象
(3) 查
索引
切片
count()
max()/min()
(4) 排序
sort()
reserve()
sorted() #对一个列表集合按照列表中某个位置的元素进行排序
li = [[1,2,3,4],[4,3,2,1],[2,4,1,3]]destli = sorted(li, key = lambda element:element[3])print (li)print (destli)>>> [[1, 2, 3, 4], [4, 3, 2, 1], [2, 4, 1, 3]]>>> [[4, 3, 2, 1], [2, 4, 1, 3], [1, 2, 3, 4]]
3. 列表生成式
>>>[i for i in range(10) if i %2 == 0]
[0, 2, 4, 6, 8]
内建函数enumerate() 作用:在列表中为获得序号提供了一个更方便的方法
>>>seq = ['a', 'b', 'c']
>>>for i, element in enumerate(seq): seq[i] = "%d:%s"%(i, element)
4. enumerate
>>> for a,b in enumerate([1,2,3,4]): >>> print (a, b)
5. zip
>>> for item in zip([1,2,3], [4,5,6]):
>>> print (item)
(1, 4) (2, 5)(3,6)
>>> for item in zip(*zip([1,2,3], [4,5,6])):
>>> print (item)
(1,2,3)(4,5,6)
例:列表合并
#coding = utf-8''' 合并两个有序列表'''l1 = [1,3,5,7,8]l2 = [2,4,6,9]def _recursion_merge_sort2(l1, l2, tmp): if len(l1) == 0 or len(l2) == 0: tmp.extend(l1) tmp.extend(l2) return tmp else: if l1[0] < l2[0]: tmp.append(l1[0]) del l1[0] else: tmp.append(l2[0]) del l2[0] return _recursion_merge_sort2(l1, l2, tmp) def recursion_merge_sort2(l1, l2): return _recursion_merge_sort2(l1, l2, [])print (recursion_merge_sort2(l1,l2) )
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
extend和append的区别:l1 = [1,3,5,7,8] l2 = [2,4,6,9]
l3 = []
#l3.append(l1) #l3.append(l2) #print (l3) l3.extend(l1) l3.extend(l2)print (l3)>>> [[1, 3, 5, 7, 8], [2, 4, 6, 9]]
>>> [1, 3, 5, 7, 8, 2, 4, 6, 9]