8.列表
列表介绍
列表是 Python 中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排在的位置。第一个元素的索引是 0,第二个索引是 1,依此类推。
Python 的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。
从数据结构角度看,Python 的列表是--个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。
python 中,用[]类定义列表
>>> list1= [1,2,3,4,5]>>> list1[1, 2, 3, 4, 5]>>> list2= [1,2,3,1,2] # 可重复>>> list2[1, 2, 3, 1, 2]>>> list3= [1,2,3,[4,5]] # 可嵌套 二维列表>>> list3[1, 2, 3, [4, 5]]>>>
复制代码
创建方式
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
list = [] #定义空列表list1 = [ 'physics', 1997,2000]list2 = [1, 2,3]list3 = ["a", "b", "C"]
复制代码
访问列表内的元素
列表从 0 开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是 len(list)-1。
查看列表元素
>>> list3= [1,2,3,[4,5]]>>> list3[3][1] # 二维列表先取到[4,5]得到一维列表,在从一维列表取到55>>>
复制代码
修改元素的值
直接对元素进行重新赋值。
>>> list3= [1,2,3,[4,5]]>>> list3[3][1]='a'>>> list3[1, 2, 3, [4, 'a']]>>>
复制代码
删除元素
使用 del 语句或者 remove(),pop()方 法删除指定的元素。
>>> list3= [1,2,3,[4,5]]>>> del list3[0] # 直接删>>> list3[2, 3, [4, 5]]>>>
复制代码
>>> list3.remove(2) # 删除一个值为2的元素>>> list3[3, [4, 5]]>>>
复制代码
>>> list3= [1,2,3,[4,5]]>>> list3.pop(1) # pop 删除指定位置上的元素2>>> list3[1, 3, [4, 5]]>>> list3.pop() # pop 不指定的时候默认从最后一个元素删[4, 5]>>> list3[1, 3]>>>
复制代码
列表的特殊操作
1)列表组合
>>> list1 = [1,2,3]>>> list2 = [4,5,6]>>> list1+list2[1, 2, 3, 4, 5, 6]>>> list3 = list1 + list2>>> list3[1, 2, 3, 4, 5, 6]>>>
复制代码
2)列表的乘法
>>> list1 = [1,2,3]>>> list1 * 2[1, 2, 3, 1, 2, 3] # 重复>>>
复制代码
3)判断元素是否在列表内部
>>> list1 = [1,2,3]>>> list1[1, 2, 3]>>> 1 in list1True>>> 5 in list1False
复制代码
4)迭代列表中的每个元素
该操作符依次访问列表中的所有元素,按照列表中元素的顺序依次来访问。第一次访问列表中的第一个元素,第二次访问列表中的第二个元素,循环执行直到访问完最后一个元素。如果列表为空,该操作也是合法的,但是不会执行循环内的代码。
>>> list1 = [1,2,3]>>> for i in list1: # 遍历所有元素 print(i) # 打印输出这些元素的值 1 # 按顺序输出各个元素23>>>
复制代码
列表的常用函数
**len(list)**返回列表元素个数,也就是获取列表长度**max(list)**返回列表元素最大值**min(list)**返回列表元素最小值**list(seq)**将序列转换为列表
>>> list1= [1,2,3,4,5,6]>>> len(list1)6>>> max(list1)6>>> min(list1)1>>> a = (1,2) # 元组>>> a(1, 2)>>> list(a)[1, 2]
复制代码
**reverse()**颠倒顺序反转
>>> list1= [1,2,3,4,5,6]>>> list1.reverse() # 修改了原列表>>> list1[6, 5, 4, 3, 2, 1]>>>
复制代码
sort() 排序
>>> list2 = [1,2,3,20,19,5]>>> list2.sort()>>> list2[1, 2, 3, 5, 19, 20]>>> list2.sort(reverse=True) # 降序>>> list2[20, 19, 5, 3, 2, 1]>>>
复制代码
列表的切片
切片指的是对序列进行截取,选取序列中的某一段。切片的语法是: list[start:end]
和字符串中的切片类似
>>> list3 = [1,2,3,4,5]>>> list3[2:4][3, 4]>>> list3[0:4:2] [1, 3]>>> list3[::-1][5, 4, 3, 2, 1]>>> >>> list5= [1,2,3,4,5,6,7,8,9,10,11,12]>>> list5[2::4] # 起始位置: 终止位置: 步长:[3, 7, 11]>>> list5[2:4][3, 4]>>>
复制代码
列表的内置方法
append(obj) 在列表末尾添加新的对象
>>> list6 = [1,2,3,4,5]>>> list6.append(77) # 在尾部加元素>>> list6[1, 2, 3, 4, 5, 77]
复制代码
count(obj) 统计某个元素在列表中出现的次数
>>> list6 = [1,2,3,4,5,77,5,5]>>> list6.count(5) # 统计某个元素在列表中出现的次数3>>>
复制代码
extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
>>> list6 = [1,2,3,4,5,77,5,5]>>> list6.extend(['a','b'])>>> list6[1, 2, 3, 4, 5, 77, 5, 5, 'a', 'b']>>> list6.append(['c','d'])>>> list6[1, 2, 3, 4, 5, 77, 5, 5, 'a', 'b', ['c', 'd']]>>>
复制代码
index(obj) 从列表中找出某个值第一个匹配项的索引位置
>>> list6 = [1, 2, 3, 4, 5, 77, 5, 5, 'a', 'b', ['c', 'd']]>>> list6.index(77)5
复制代码
insert(index, obj) 将对象插入列表
>>> list6.insert(3,'A')>>> list6[1, 2, 3, 'A', 4, 5, 77, 5, 5, 'a', 'b', ['c', 'd']]>>>
复制代码
pop(obj=list[-1]) 移除列表中的一个元素 (默认最后-个元素),并且返回该元素的值
>>> list6.pop()['c', 'd']>>> list6[1, 2, 3, 'A', 4, 5, 77, 5, 5, 'a', 'b']>>>
复制代码
remove(obj) 移除列表中某个值的第一个匹配项
>>> list6.remove(5)>>> list6[1, 2, 3, 'A', 4, 77, 5, 5, 'a', 'b']>>>
复制代码
reverse() 反向列表中元素
>>> list6[1, 2, 3, 'A', 4, 77, 5, 5, 'a', 'b']>>> list6.reverse()>>> list6['b', 'a', 5, 5, 77, 4, 'A', 3, 2, 1]>>>
复制代码
sort([func]) 对原列表进行排序
>>> list2 = [1,2,3,20,19,5]>>> list2.sort()>>> list2[1, 2, 3, 5, 19, 20]>>> list2.sort(reverse=True) # 降序>>> list2[20, 19, 5, 3, 2, 1]>>>
复制代码
copy() 复制列表
>>> list6['b', 'a', 5, 5, 77, 4, 'A', 3, 2, 1]>>> copylist6 = list6.copy()>>> copylist6['b', 'a', 5, 5, 77, 4, 'A', 3, 2, 1]>>>
复制代码
clear() 清空列表,等于 del list[:]
>>> copylist6.clear()>>> copylist6[]>>> list6['b', 'a', 5, 5, 77, 4, 'A', 3, 2, 1]>>> del list6[:] # 清空列表>>> list6[]>>> del list6 # 删除列表>>> list6Traceback (most recent call last): File "<pyshell#153>", line 1, in <module> list6NameError: name 'list6' is not defined>>>
复制代码
评论