Python之列表
1.1列表概述
- 列表中的数据按顺序排列。
- 列表有正序和倒叙两种索引。
- 列表可存储任意类型数据,且允许重复。
1.2初始列表
#变量名=[元素1,元素2,....] list = ['a' , 'b' , 'c' , 'd' , 1 , 2 , 3 , 4] print(list) list1 = [] print(list1)
1.3列表的取值
list = ['张三', '赵六', '李四', '王五', '赵六', '钱七', '孙八'] print(list) # 取值的语法: 变量 = 列表变量[索引值] zhaoliu = list[3] print(zhaoliu) zhaoliu = list[-3] print(zhaoliu) # 范围取值: 列表变量 = 原列表变量[起始索引:结束索引] # 在Python中列表范围取值是"左闭右开" list1 = list[1: 4] print(list1) print(list1[-1]) # 列表的index函数用于获取指定元素的索引值 zhaoliu_index = list.index('赵六') print(zhaoliu_index)
1.4列表的遍历
1.4.1使用for循环
name_list = ["zhangsan", "lisi", "wangwu"] for name in name_list: print(name)
1.4.2使用while循环
name_list = ["zhangsan", "lisi", "wangwu"] i = 0 name_len = len(name_list) while i < name_len: print(name_list[i]) i += 1
1.5列表的排序与排序
#列表的反转与排序 persons = ['张三', '赵六', '李四', '王五', '赵六', '钱七', '孙八'] persons.reverse() #reverse方法用于反转列表 print(persons) numbers = [28,32,14,12,53,42] numbers.sort(reverse=True) #sort()用于排序,reverse=True代表降序排列 print(numbers)
内置函数sorted,不会改变原有的列表数据,会生成一个新的有序数据
num = [6, 5, 3, 1, 2] x = sorted(num) print(x) # [1, 2, 3, 5, 6]
1.6列表的新增
persons = ['张三', '赵六', '李四', '王五', '赵六', '钱七', '孙八'] # 列表的追加 persons.append("杨九") print(persons) # 列表的插入 persons.insert(2 , '刘二') print(persons) persons.insert(len(persons) , '候大') print(persons)
1.7列表的修改
# 列表的更新 persons[2] = '宋二' print(persons) # 列表范围取值是"左闭右开" persons[3:5] = ['王五','李四'] print(persons)
1.8列表的删除
# 列表的删除操作 # 按元素内容删除,如果数据不在列表中,会报错 persons.remove('宋二') print(persons) # 按索引值删除元素,并且返回这个数据 persons.pop(4) print(persons) # 范围删除 persons[4:7] = [] print(persons)
1.9列表的查询
tanks = ['程咬金', '盾山', '程咬金'] print(tanks.index('盾山')) # 1,如果元素不存在,会报错 print(tanks.count('程咬金')) # 2
1.10列表的其他常用方法
1.10.1统计出现次数
# 其他常用方法 persons = ['张三', '赵六', '李四', '王五', '赵六', '钱七', '孙八'] #统计出现次数 cnt = persons.count('赵六') print(cnt)
1.10.2追加操作
# 追加操作 # append将整个列表追加到末尾,extend则是将列表中的元素追加到原始列表末尾 persons = ['张三', '赵六'] persons.append(['杨九', '吴十']) # ['张三', '赵六', ['杨九', '吴十']] print(persons) persons.extend(['杨九', '吴十']) # ['张三', '赵六', ['杨九', '吴十'], '杨九', '吴十'] print(persons)
1.10.3in操作符
in(成员运算符) 运算符用于判断数据是否在列表中存在,存在返回True,不存在返回False。
persons.remove('张三') b = '张三' in persons print(b)
1.10.4复制列表
#copy 函数用于复制列表,这个新列表和原有的里列表内容一样,但是指向不同的内存空间 persons1 = persons.copy() persons2 = persons print(persons1) #is 身份运算符用于判断两个变量是否指向同一块内存 print(persons1 is persons) print(persons2 is persons)
1.10.5清空列表
#clear 用于清空列表
persons.clear()
print(persons)
1.11列表推导式
multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
列表推导式在有些情况下超赞,特别是当你需要使用for循环来生成一个新列表。举个例子,你通常会这样做:
squared = [] for x in range(10): squared.append(x**2)
你可以使用列表推导式来简化它,就像这样:
squared = [x**2 for x in range(10)]
1.12补充:交换两个变量的值
a = 12 b = 15 a, b = b, a print(a, b) # 15 12
1.13项目中列表的使用场景
# 多维列表(嵌套列表) # [[姓名,年龄,工资],[姓名,年龄,工资],[姓名,年龄,工资],[姓名,年龄,工资]] # 字符串:"姓名,年龄,工资"例如: "张三,30,2000" # str = "张三,30,2000" # l = str.split(",") # print(l) emp_list = [] while True: info = input("请输入员工信息:") if info == "": print("程序结束") break info_list = info.split(",") if len(info_list) != 3: print("输入格式不正确,请重新输入") continue emp_list.append(info_list) # print(emp_list) for emp in emp_list: print("{n},年龄:{a},工资:{s}".format(n=emp[0],a=emp[1],s=emp[2]))
列表的应用场景:在实际开发中,列表存储相同类型的数据,通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作。