Python中的列表其实就是java的数组形式,包括使用下标访问都是一致的,唯一不同的是Python存储数据时数据类型可以在一个列表中混用,在遍历以及插入数据等都比较方便。
1.列表定义
1.1 定义一个空列表
list=[] # 定义一个空数组
print(list)
print(type(list))
# 运行结果:
'''
[]
<class 'list'>
'''
1.2 混合数据类型列表
取出第一个类型为int,第二个类型元素为String
list=[1,"小李"] #列表里可以混合类型
print(list[0]) # 取列表元素第一个数据
print(type(list[0])) # 取列表元素第一个数据类型
print(list[1]) # 取列表元素第二个数据
print(type(list[1])) # 取列表元素第二个数据类型
# 运行结果:
'''
1
<class 'int'>
小李
<class 'str'>
'''
2.列表增加操作
2.1 append方式
append追加数据方式
定义一个名字列表,默认有小王,小李,通过append向后追加小张,增加前遍历打印数组元素,追加后再遍历打印数组元素
namelist=["小王","小李"]
print("----------增加前,名单列表的数据-----------------")
for name in namelist:
print(name)
namelist.append("小张")
print("----------增加后,名单列表的数据-----------------")
for name in namelist:
print(name)
运行结果:
'''
----------增加前,名单列表的数据-----------------
小王
小李
----------增加后,名单列表的数据-----------------
小王
小李
小张
'''
append数组追加数组
会把列表结果嵌套到一起
a=[1,2]
b=[3,4]
a.append(b)
print(a)
#运行结果: [1, 2, [3, 4]]
2.2 extend
extend是指将任何可迭代的元素添加到当前列表的末尾。
a=[1,2]
b=[3,4]
# 用extend把b列表每个元素都加入到a了
a.extend(b)
print(a)
# 运行结果为:[1, 2, 3, 4]
2.3 insert
在指定位置插入指定元素数据
a=[0,2,4]
a.insert(1,1)
print(a)
#运行结果:[0, 1, 2, 4]
3.列表删除元素
3.1 del
del可以删除某个元素,也可删除变量,删除整个列表则访问变量名称也会报错,
下面例子删除下标为1的参数也就是列表中的第二个,删除前打印数据,删除后在打印下列表数据
a=[0,1,2,3,4]
print("----------删除前,列表的数据-----------------")
for num in a:
print(num)
del a[1] # del删除指定下标的数据
print("----------删除后,列表的数据-----------------")
for num in a:
print(num)
1就被删除掉了
我们把变量a列表删除掉,del a
a=[0,1,2,3,4]
del a
print("----------删除前,列表的数据-----------------")
for num in a:
print(num)
在for循环使用a的时候直接报错了,没有定义a变量,其实是del给删除了,切记删除变量后不要使用其变量,
3.2 pop
pop没有指定索引则默认弹出末尾最后一个元素,否则删除指定索引
a=[0,1,2,3,4]
print("----------删除前,列表的数据-----------------")
for num in a:
print(num)
a.pop() #弹出末尾最后一个元素
print("----------删除后,列表的数据-----------------")
for num in a:
print(num)
结果则把最后一个元素删除,如果指定下标,则a.pop(下标)使用
3.3 remove
remove可指定删除某个数据中的元素,如果集合中存在一模一样的元素数据,则只删除前面部分
a=[0,1,2,3,4,3]
print("----------删除前,列表的数据-----------------")
for num in a:
print(num)
a.remove(3) # 移除指定元素,两个重复元素,只删除前面的一个
print("----------删除后,列表的数据-----------------")
for num in a:
print(num)
4.列表修改
通过下标元素直接更改
a=[0,1,2,3,4]
a[0]=5 # 直接通过下标更改
print(a)
运行结果:[5, 1, 2, 3, 4]
5.列表查询
5.1 in,not in
查询除了遍历以外还有in,not in,判断元素是否存在和不存在的操作
输入一个数字是否存在在a元素里,如果存在进入查找到了数字,否则进入没用查找到数字,
not in 就不说了不存在就怎么样,可以自己测试
a=[0,1,3]
num=int(input("请输入数字:"))
if num in a :
print("查找到了数字")
else:
print("没有查找到数字")
运行结果:
5.2 index
index查找指定元素出现在哪个下标,返回对应的下标,如下查找a在0下标到3(左闭右开)下标下的数据是否存在a,注意是左闭右开的,所以左边下标准确,右边数字则往前加一个下标则才能得到你想要的结果,优先返回前面范围的结果
a=["a","b","c","d","a","t"]
print(a.index("a",0,4)) # 查询指定下标范围,并返回找到数据对应的下标,左闭右开[1,-3)
# 结果:返回0
从1下标找到4下标,就会报错,b,c,d里没有a,
a=["a","b","c","d","a","t"]
print(a.index("a",1,4))
5.3 enumerate函数
通过enumerate函数遍历列表元素,既可以得到列表的元素下标也可以得到列表中的内容
# 通过enumerate枚举函数同时拿到列表中下标和元素内容
info = ["name", "age"]
print(enumerate(info))
for i,data in enumerate(info):
print(i,data)
# 结果:
'''
0 name
1 age
'''
6.排序、反转
6.1 sort
sort排序
a=[5,8,1,2]
a.sort() #排序
print(a)
# 结果:[1, 2, 5, 8]
6.2 reverse
reverse反转,可以通过sort指定参数进行反转,也可直接调用reverse方法反转,reverse反转元素顺序,通过sort(reverse=True)则将对列表进行降序排序
a=[5,8,1,2]
a.reverse() #反转
print(a)
# 结果:[2, 1, 8, 5]
a=[5,8,1,2]
a.sort(reverse=True) #反转
print(a)
# 结果:[8, 5, 2, 1]
7.嵌套数组的使用
就是二元数组的使用,通过访问元素的下标,第一个schoolNames[0]则获取第一组全部数据,schoolNames[0][1]则获取第一组第一个数据
# 嵌套数组的使用
schoolNames=[["北京大学","清华大学"],["南开大学","天津大学",],["再次一点大学","一组"]]
print(schoolNames[0])
print(schoolNames[0][1])
结果:
课堂练习:
现有三个办公室,随机分配人员进入不同的房间
1.首先要有0-2的随机数,需要导入随机数库,代表3个房间
2.定义办公室,定义进入办公室的人员
3.随机分配时把人员追加到办公室变量里,最后循环下房间变量
代码如下:
# 随机分配人员进入不同的房间
import random
offices=[[],[],[]] # 定义办公室
names=["小张","小王","小李","小杜","小钱","小木","小刘","小赵"] # 定义人员
# 遍历人员信息
for name in names:
index=random.randint(0,2) # 生成0-2的随机数,0是第一个房间,1是第二个房间,2是第三个房间
offices[index].append(name) # 往房间添加人员
i=1
for office in offices:
print("办公室%d人数为:%d"%(i,len(office))) # 获取二元数组每组办公室的人员数量(通过len获取长度)
i=i+1
for name in office:
print("%s"%name,end="\t") # 循环获取每个办公室里的人员数据
print("\n")
print("-"*20)
运行结果为:
作业:
给你一组商品数据,打印如下的商品列表,让用户输入选择的商品编号,用户输入q则结束选择,并把用户购买的信息打印如下:
商品信息列表:
products = [["iphone", 6888], ["MacPro", 14888], ["小米6", 2499], ["Book", 60], ["Nike", 690]]
还蛮简单的小测验,自己可以试着做下,下期给我自己做的答案!