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]得到一维列表,在从一维列表取到5
5
>>>
复制代码
修改元素的值
直接对元素进行重新赋值。
>>> 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 list1
True
>>> 5 in list1
False
复制代码
4)迭代列表中的每个元素
该操作符依次访问列表中的所有元素,按照列表中元素的顺序依次来访问。第一次访问列表中的第一个元素,第二次访问列表中的第二个元素,循环执行直到访问完最后一个元素。如果列表为空,该操作也是合法的,但是不会执行循环内的代码。
>>> list1 = [1,2,3]
>>> for i in list1: # 遍历所有元素
print(i) # 打印输出这些元素的值
1 # 按顺序输出各个元素
2
3
>>>
复制代码
列表的常用函数
**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 # 删除列表
>>> list6
Traceback (most recent call last):
File "<pyshell#153>", line 1, in <module>
list6
NameError: name 'list6' is not defined
>>>
复制代码
评论