python6 列表
容器类型:
- list 列表
- tuple 元组
- set 集合
- dict 字典
list列表:
格式
空列表: moneys=[]
有内容列表: moneys = [100,80,60,10]
列表长度
len(moneys) 类似字符串
列表元素的添加
moneys = [] # 空列表
print(type(moneys)) # <class 'list'>
print(len(moneys)) # 0
moneys = [100, 80, 60, 10]
print(type(moneys)) # <class 'list'>
print(len(moneys)) # 4
names = []
names.append('张三1')
names.append('张三2')
names.append('张三3')
print(names) # ['张三1', '张三2', '张三3']
特点
- 就打印来说: 先进先出 queue 队列
- 列表中是允许有重复元素
- 列表也有下标(类似字符串)
- 列表元素的循环遍历
打印
moneys = [50, 40, 100, 50, 70]
print(moneys)
支持下标
print(moneys[2]) # 100
print(moneys[-1]) # 70
使用切片
print(moneys[:2]) # [50, 50]
print(moneys[1:]) # [40, 100, 50, 70]
print(moneys[::-1]) # [70, 50, 100, 40, 50]
print(moneys[::-2]) # [70, 100, 50]
列表元素的便利
for i in moneys:
print(i)
'''
50
40
100
50
70
'''
列表判断
判断列表中是否存在60元素
使用关键词:in 和 not in
格式:元素 in 列表 返回值是bool类型
if 60 not in moneys:
print('不存在')
else:
print('存在')
if 60 in moneys:
print('存在')
else:
print('不存在')
增删改查
增加
- append 在末尾添加元素
- insert 在指定位置插入元素
- extend 合并两个列表
names = []
names.append('托儿索')
names.append('儿童劫')
names.append('小学僧')
print(names) # ['托儿索', '儿童劫', '小学僧']
names.insert(0, '望远烬')
print(names) # ['望远烬', '托儿索', '儿童劫', '小学僧']
names.insert(2, '喜之螂')
print(names) # ['望远烬', '托儿索', '喜之螂', '儿童劫', '小学僧']
names1 = ['小学生之手', '尿不狮']
names.extend(names1)
print(names) # ['望远烬', '托儿索', '喜之螂', '儿童劫', '小学僧', '小学生之手', '尿不狮']
删除
- pop(): 默认删除末尾元素
- pop(index): 指定下标位置删除
- remove(名字): 根据元素名称删除,如果不存在则报错
- clear(): 清空列表中的所有元素
- 可以使用系统关键字实现删除: del list[index]
print(names) # ['望远烬', '托儿索', '喜之螂', '儿童劫', '小学僧', '小学生之手', '尿不狮']
names.pop()
print(names) # ['望远烬', '托儿索', '喜之螂', '儿童劫', '小学僧', '小学生之手']
names.pop(1)
print(names) # ['望远烬', '喜之螂', '儿童劫', '小学僧', '小学生之手']
names.remove('小学僧')
print(names) # ['望远烬', '喜之螂', '儿童劫', '小学生之手']
# 里面的元素容易引起异常 只要元素不在列表中则报错
names.remove('尿不狮') # ValueError: list.remove(x): x not in list
del names[3]
print(names) # ['望远烬', '喜之螂', '儿童劫']
names.clear()
print(names) # []
修改
列表[index] = 新值
numbers = [4, 6, 9, 1, 5]
numbers[0] = 5 # 将新值替换原来的旧值
print(numbers) # [5, 6, 9, 1, 5]
查找
i = 列表.index(要查找的元素) 返回值是此元素的位置
if 9 in numbers:
# 是否存在一个方法能定义元素的位置
index = numbers.index(9)
print(index) # 2
其它方法
- count
list1 = [6, 1, 2, 9, 4, 5, 8, 5, 3, 6, 3]
# 统计列表中元素的个数
num = list1.count(3)
print(num) # 2
- sort
list1 = [6, 1, 2, 9, 4, 5, 8, 5, 3, 6, 3]
list1.sort() # 默认升序
print(list1) # [1, 2, 3, 3, 4, 5, 5, 6, 6, 8, 9]
list1.sort(reverse=True) # 排序:降序
print(list1) # [9, 8, 6, 6, 5, 5, 4, 3, 3, 2, 1]
系统函数
- sum()
- max()
- min()
- sorted()
# 求和
list1 = [37, 61, 99, 43, 62, 29, 2, 100, 85, 16, 65, 76, 83, 82, 35]
result = sum(list1)
print(result) # 875
# 求平均值
avg = sum(list1) / len(list1)
print(avg) # 58.333333333333336
# 求最大值
maxnum = max(list1)
print(maxnum) # 100
# 求最小
minnum = min(list1)
print(minnum) # 2
# 排序
result = sorted(list1)
print(result) # [2, 16, 29, 35, 37, 43, 61, 62, 65, 76, 82, 83, 85, 99, 100]
result = sorted(list1, reverse=True)
print(result) # [100, 99, 85, 83, 82, 76, 65, 62, 61, 43, 37, 35, 29, 16, 2]
print(list1) # [37, 61, 99, 43, 62, 29, 2, 100, 85, 16, 65, 76, 83, 82, 35]
list1.sort()
print(list1) # [2, 16, 29, 35, 37, 43, 61, 62, 65, 76, 82, 83, 85, 99, 100]
sorted(list)与list.sort()区别:
- sorted(list)返回一个排序好的列表,原列表不变
- list.sort()直接修改原列表,返回None
嵌套的列表
list1 = []
list1.append('admin')
list1.append(100)
list1.append(99.9)
list1.append(True)
print(list1) # ['admin', 100, 99.9, True]
# list类型
list1.append([1, 2, 3, 4])
print(list1) # ['admin', 100, 99.9, True, [1, 2, 3, 4]]
list2 = [[1, 2, 3], [2, 3, 4], [1, 1, 1, 6], [5, 5, 5]]
print(len(list2)) # 4
print(list2[2]) # [1, 1, 1, 6]
print(len(list2[2])) # 4
# 求list2中所有数字的累加和
sum = 0
for i in list2: # 因为是双层的列表 i 就是一个列表
for j in i:
sum += j
print('和:', sum) # 和: 39