列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字。Python有6个序列的内置类型,本文讲最基本的序列类型之一列表的用法。
以下列表方法于
菜鸟教程
加工整理
list.append(obj) | 列表的数据项进行修改或更新 |
---|---|
del(value) |
删除列表元素 |
cmp(list1, list2) |
比较两个列表的元素 |
len(list) |
返回列表元素个数 |
max(list) |
返回列表中元素的最大值 |
min(list) |
返回列表中元素的最小值 |
list(seq) |
将元组转换列表 |
list.count(obj) |
统计某个元素在列表中出现的次数 |
list.extend(seq) |
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表 |
list.index(obj) |
从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) |
将对象插入列表 |
list.pop([index=-1]) |
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) |
移除列表中某个值的第一个匹配项 |
list.reverse() |
反向列表中元素 |
l ist.sort(cmp=None, key=None, reverse=False) |
对原列表进行排序 |
列表的创建
列表是一个大杂烩,对其对象数据类型没有规定,所有类型都可以放入列表。
list1=[];
list2=['a','b','c']
list3=[1,"中国",list2]
通过索引或截取访问列表内的对象
list1=[1,2,3,4,5,6];
print(list1[0])
print(list1[0:2])
得到
1
[1, 2]
基本方法
1.更新 append()
列表的更新使用append()方法
list1=["北京","上海","广州"]
list1.append("深圳")
print(list1)
运行结果如图
['北京', '上海', '广州', '深圳']
2.删除 del(list.[index])/del list
使用del方法可选择删除单个列表中的指定元素(需获取索引值)或整个列表
删除整个列表后该列表被回收,不可再次打印
del(list.[index])
list1=["北京","上海","广州","深圳"]
del(list1[1]) #删除第二个元素
print(list1)
运行结果如图
['北京', '广州', '深圳']
del list
del list1
print(list1)
运行结果如图
此时List1已经被回收,并不是空列表,所以报错
3 比较方法 python2(cmp) python3(operator)
cmp()方法存在于python2中,在python3中不存在cmp()函数,相应的改为operator函数,在使用时需要导入operator模块
比较规则:
如果比较的元素是同类型的,则比较其值,返回结果。
如果两个元素不是同一种类型,则检查它们是否是数字。
如果是数字,执行必要的数字强制类型转换,然后比较。
如果有一方的元素是数字,则另一方的元素”大”(数字是”最小的”)
否则,通过类型名字的字母顺序进行比较。
如果有一个列表首先到达末尾,则另一个长一点的列表”大”。
如果我们用尽了两个列表的元素而且所 有元素都是相等的,那么结果就是个平局,就是说返回一个 0。
这里使用
python3
operator()方法进行实例化
import operator
list1=[1,2]
list1_1=[3,4]
list2=[5,6]
list2_1=['i','love','u']
list3=['welcome','hello']
list3_1=['hi','python']
list4=[1,2,3]
list4_1=[1,2,3]
print(operator.eq(list1,list1_1))
print(operator.eq(list2,list2_1))
print(operator.eq(list3,list3_1))
print(operator.eq(list4,list4_1))
运行结果如图
False
False
False
True
4 len() 得到列表元素个数
list1=[1,2,3,4]
print(len(list1))
运行结果如图
4
5 max() 返回元素中的最大值
列表的元素可以是数字,字符串,字符等,不支持同类型的比较
字符串的比较规则:依次比较各位字母的ASCII对应值的大小,第一位相同则比较第二位,以此类推,若前几位字符都相同则后面任有字符的大
list1=['a','b']
list2=[1,2,3,4]
list3=['no','yes','yesa']
print(max(list1))
print(max(list2))
print(max(list3))
运行结果如图
b
4
yesa
6 list.count()统计某个元素在列表中出现的次数
list1=[1,2,3,1,2,1]
print(list1.count(1))
运行结果如图
3
7 list.extend() 对原列表的拓展。在列表末尾一次性追加另一个序列中的多个值
list1=["北京","上海","广州","深圳"]
list2=["南京","苏州","青岛","杭州"]
list1.extend(list2)
print(list1)
#注:这里不能直接print(list1.extend(list2))
#否则输出为none
#因为得到的是extend函数的返回值为none
运行结果如图
['北京', '上海', '广州', '深圳', '南京', '苏州', '青岛', '杭州']
8 list.reverse() 反向列表中元素
list1=[1,2,3,4,5]
list1.reverse()
print(list1)
运行结果如图
[5, 4, 3, 2, 1]
9 list.sort([reverse]) 列表元素排序
可选参数reverse 默认为False 正向排序
reverse 为True 时 反向排序
list2=['a','b','g','f','d']
list1=[2,5,7,1,8,3]
list1.sort(reverse=True)
list2.sort()
print(list2)
print(list1)
运行结果如图
['a', 'b', 'd', 'f', 'g']
[8, 7, 5, 3, 2, 1]
说到列表排序, 这里补充一个列表的逆置简单方法
list1=[2,5,7,1,8,3]
print(list1[::-1]) #-1 代表元素从右往左
[3, 8, 1, 7, 5, 2]
10 列表推导式
列表推导式用于实现统一规律的列表元素的批量生成
如生成10以内的偶数
list1=[x for x in range(100) if x%2==0]
print(list1)
运行结果如图
[0, 2, 4, 6, 8]