Python变量4-标准数据类型-列表
- 列表的定义
- 列表的创建
- []创建
- 通过全局函数list()创建
- 列表的访问
- 索引和切片
- for,while循环遍历
- 带索引的遍历
- 列表中的子列表访问
- 列表的方法
- 列表中添加元素
- 列表并列表
- 删除列表元素
- 列表其它方法
- 列表的常用运算符
- 列表的比较
- 同顺序列表比较
- 不同顺序列表比较
- 包含比较
列表的定义
- 是一种有序和可更改的集合
- 允许重复的成员
- 列表的元素不需要具有相同的类型,但建议使用相同类型
列表的创建
[]创建
- 使用[],各元素之间逗号间隔
- 列表中的元素也可以是列表
list1 = ['physics', 'chemistry', 1997, 2000, [1,2,3], {"a":5, "b":6}, {7,8,9}]
list2 = [] #空列表
通过全局函数list()创建
- list() 方法用于将序列等转换为列表
- 字典只提取其key转换为类别
list1 = list() #列表
list1=list("Hello World"); print (type(list1), list1)
<class 'list'> ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
list1=list({"a":1, "b":2}); print (type(list1), list1)
<class 'list'> ['a', 'b']
列表的访问
索引和切片
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,直到字符串长度的相反数
- list1[start🔚step]start和end为空的时候,默认是全选,step为空时默认是1
- 当省略前面的参数时,必须加冒号
a=['BeiJing', 'SH', "ShenZhen", "GuangZhou", "ChengDu", "XiAn"] #列表
a[:]; a[::] # 访问列表全部元素
a[1:] # index为1之后所有元素
a[:5] # index为5之前的所有元素但不包括index=5
a[::2] # 从index为0开始,以步长为2来选择元素
a[::-1] # 列表逆序
for,while循环遍历
- for i_list1 in list1,i_list1循环列表中的每一个元素
- while i_list1 < len(names)…i_list1 += 1…循环列表中的index
带索引的遍历
- enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
province = ["上海", "江苏", "浙江"]
for idx, i_province in enumerate(province):
print(idx, i_province)
result:
0 上海
1 江苏
2 浙江
列表中的子列表访问
- list1[index1][index2]
列表的方法
列表中添加元素
- list1.append(object),在末尾添加一个元素
- list1.insert(index, object),在指定位置添加一个元素
a=['BeiJing', 'SH']; print("更改之前", a, id(a))
a.append("NanChang"); print("更改之后ID", a, id(a))
result:
更改之前 ['BeiJing', 'SH'] 2177134554248
更改之后ID ['BeiJing', 'SH', 'NanChang'] 2177134554248
a=['BeiJing', 'SH']; print("更改之前", a, id(a))
a.insert(1, "NanChang"); print("更改之后ID", a, id(a))
result:
更改之前 ['BeiJing', 'SH'] 2177134513352
更改之后ID ['BeiJing', 'NanChang', 'SH'] 2177134513352
列表并列表
- list1.extend(iterable) 在末尾添加可迭代的对象,ID不变。
- list1 + list2,在末尾并上另一个列表,ID改变,只能列表加上列表。
list1=list("Hello"); print(list1, id(list1))
list1=list1+[1,2,3]; print(list1, id(list1))
result:
['H', 'e', 'l', 'l', 'o'] 2177135895496
['H', 'e', 'l', 'l', 'o', 1, 2, 3] 2177134449736
删除列表元素
- list1.remove(value),删除第一个出现的元素,有元素时,返回None,没有该元素时,报错
- list1.pop(index=-1),删除指定位置的元素,有该index时,返回其所对应的元素,没有该index时,报错
- list1.clear(),删除列表中的所有元素,变为空列表
- del list1,删除该列表
列表其它方法
方法 | 描述 | 举例 |
list[index]=value | 改变列表中某个元素的值 | a=[1,2,3]; a[2]=66 |
list.count(obj) | 统计某个元素在列表中出现的次数 | [1,2,4,2,4,2,2,2].count(2) => 5 |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 | [1,2,4,2,4,2,2,2].index(4) => 2 |
list.reverse() | 反向列表中元素 | list1=[1,2,4]; list1.reverse() => [4, 2, 1] |
list.sort(reverse=False) | 进行排序 | list1=[1,8,6];list1.sort(reverse=True);print(list1) => [8, 6, 1] |
list.copy() | 列表浅拷贝 | 对于多维列表,只是第一维深拷贝了(嵌套的List保存的是地址),其内层的list元素改变了,原列表也会变。 |
len(list) | 返回列表长度 | len([1,2,[3,4,5]]) => 3 |
sorted((iterable, reverse=False)) | 返回排序后的新列表 | sorted([1,5,3]) => [1, 3, 5] |
max(iterable)/max(arg1,arg2…) | 返回其中最大的 | max([1,5,8]) =>8 |
min(iterable)/min(arg1,arg2…) | 返回其中最小的 | min([1,5,8]) =>1 |
list(seq) | 将一个可迭代对象转为列表 | list((1,5,[1,2,3])) =>[1, 5, [1, 2, 3]] |
列表的常用运算符
方法 | 描述 | 举例 |
+ | 并上另一个列表,ID改变 | [1,2,3]+[4,5,6] |
* | 复制列表元素添加至原列表后面 | [3]*5 => [3,3,3,3,3] |
in, not in | 判断一个元素是否在列表中 | 3 in[1,3] =>True |
is is not | 判断两个列表是否引用同一块空间 | a=[1], b=[1], a is not b => True |
列表的比较
同顺序列表比较
- 同顺序列表比较,使用==
a=[1,2,3]; b=[1,3,2]
result:False
不同顺序列表比较
- 可以先对列表进行排序,再用==比较,使用list.sort()方法或者sorted函数
包含比较
- 使⽤set()转成集合进⾏包含⽐较
list1=[1,2,4,3,5,7,9]
list2=[1,3,4]
set(list2).issubset(set(list1))
result:True