-
创建空列表
list1 = list() list2 = []
快速创建列表的方式:
#方法一 a = [] for i in range(1,10): a.append(i) print(a) #方法二 b = list(range(1,10)) print(b) #方法三 c = [i for i in range(1,10)] print(c)
[扩展]
创建一个占用十个元素空间,却不包括任何有用内容的列表list1 = [None]*10 #结果:[None, None, None, None, None, None, None, None, None, None]
-
获取列表长度 len(列表名称) 或list.len(),也可用于字符串类型
list1 = [1,2,3,4,5,6] len(list)
-
在列表末尾插入元素 append(obj)
list1 = ['a', 'b', 'c'] list1.append("d")
-
在列表中指定位置(索引)插入一个元素
list1.insert(2,1)
-
清空列表列表
list.clear()
-
复制列表 copy(),类似于 a[:]
copy()属于浅拷贝,至拷贝内容 =属于深拷贝(值与地址一起拷贝)list1 = list.copy()
【扩展】
直接赋值:其实就是对象的引用(别名)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 d = copy.deepcopy(a) #对象拷贝,深拷贝 a.append(5) #修改对象a a[4].append('c') #修改对象a中的['a', 'b']数组对象 print( 'a = ', a ) print( 'b = ', b ) print( 'c = ', c ) print( 'd = ', d )
以上实例执行输出结果为: a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] c = [1, 2, 3, 4, ['a', 'b', 'c']] d = [1, 2, 3, 4, ['a', 'b']]
-
统计某个元素在列表中出现的次数 count(obj)
list1 = [0,2,0,5,0,1,2] list1.count(0)
-
extend(seq) seq—列表,在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
【注】:必须追加一个列表list1.extend(list2)
-
index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
(1)如果查询元素在列表中不存在,会报错。所以查询时应加上安全判定list1.index(7) #ValueError: 7 is not in list
(2)找出某个值第一个匹配项的索引位置
list1.index(list2[1])
(3)也可以指定范围内某元素的第一次出现的索引
list1.index(1,1)
-
pop(index) 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
list1.pop()
-
remove(obj) 函数用于移除列表中某个值的第一个匹配项。
list1.remove(1)
-
list.reverse()将列表中所有元素倒置
list1.reverse()
-
将列表中的元素从小到大排序 sort()
注:排序是要保证列表里元素的类型是一致的,字符串排序时首字母按照ASCII码表中的顺序排列
格式1:列表.sort() ------按照从小到大排序(数字)a = [4,1,7,3,2] a.sort() print(a) #打印结果:[1, 2, 3, 4, 7]
格式2:列表.sort(reverse=True) -----按照从大到小排序(数字)
a = [4,1,7,3,2] a.sort(reverse=True) print(a) #打印结果:[7, 4, 3, 2, 1]
格式3:列表.sort(key=函数) -----对值进行指定的函数处理之后在从小到大排序
a = [41,16,33,6,11,52] def fun(n): return n % 10 a.sort(key=fun) print(a) #打印结果:[41, 11, 52, 33, 16, 6]
格式4:列表.sort(key=函数,reverse=True) ----对值进行指定的函数处理之后在从大到小排序
a = [41,16,33,6,11,52] def fun(n): return n % 10 a.sort(key=fun,reverse=True) print(a) #打印结果:[16, 6, 33, 52, 41, 11]
-
列表总结
删除
1.list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
2.list.remove(obj):移除列表中某个值的第一个匹配项
3.list.clear() :清空元素
4.deldel name[2] del name[:2]
增加
- list.insert(index, obj):将对象插入列表中
- list.append(obj):在列表末尾添加新的对象
- list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
切片
1.list[起始位置:终止位置:幅度]:切片时取值范围是[起始值:终止值),当起始值>=终止值时,
输出的是空的(字符串,列表,元组等)。a = [5, 3, 3, 4, 2, 2] b = a[0:3:2] print(b) #结果:[5, 3]
2**.list[start?step]** :当幅度省略时(幅度默认为1),切片只能正向截取(从索引小的位置截取到大的位置)
a = [5, 3, 3, 4, 2, 2] b = a[-1:-3:-1] print(b) #结果:[2, 2]
-
列表推导式
variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。 if out_exp == 2: 根据条件过滤哪些值可以。
1)简单的列表推导式
格式:[变量 for 变量 in 列表]
结果:遍历列表中的每个值,将每个值获取之后组成新的列表,可以对获取的值进行修改
[变量可以其他操作 for 变量 in 列表]list1 = [i for i in range(1,10)] print(list1) list2 = [i*2 for i in range(1,10)] print(list2)
2)带有判断条件的列表推导式
格式:[变量 for 变量 in 列表 if 条件表达式]
结果:遍历列表中的每个值,根据判断条件决定是否取出指定的值组成新的列表,可以对获取的值进行修改list3 = [i for i in list1 if i % 3 == 0] print(list3)
3)多个列表的同时循环的列表推导式
格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2]
结果:同时遍历列表1和列表2中的每个值,将列表1中的每个值和列表2中的每个值进行运算得到新的列表。新的列表中元素个数=列表1中元素个数 * 列表2中的元素个数
变量1和变量2可以进行其他操作,不一定非要+ 这只是demolist4 = [i+j for i in range(1, 10) for j in range(4, 0, -1) if i % 2 == 0 and j % 2 == 1] print(list4)
4)带有判断条件的多个列表的同时循环列表推导式
格式:[变量1+变量2 for 变量1 in 列表1 for 变量2 in 列表2 if 条件表达式]
结果:同时遍历列表1和列表2中的每个值,根据判断条件将列表1中的值和列表2中的值进行运算,得到新的列表。新的列表数量由判断条件决定list5 = [i+j for i in range(1, 10) for j in range(4, 0, -1)] print(list5)
Python(列表)
最新推荐文章于 2023-02-26 22:15:10 发布