1. 列表 list
存储一系列名字,存储一些新闻条目,可以使用列表的格式。
Name = “张三”
Name2 = “lisi ”
#以上变量都是用来存储单个数据的变量
#而列表是可以存储多个数据的高级数据类型 -- 而称之为容器
List = [“张三”,”李四”,”王五”]
1.1. 列表的基本形式
列表中不仅仅可以存储相同的数据,也可以存储不同的数据类型
names=["张三","李四","王五","赵六"]
ages=[1,4,6,9]
s=[1,"哈哈","呵呵",True]
1.2. 获取列表中元素
1.2.1. 根据下标(索引)获取
#可以根据下标来对列表中的元素进行获取
#注意:列表中下标对应的是一个元素 ,其他的和字符串中的下标使用是一致的
print(names[0])
print(names[1])
print(names[-1]) #得到的是列表中从右向左的第一个元素。但是一般不会使用负数的下标
1.2.2. 切片操作
列表的切片操作和字符串中的切片操作一致,不一样的就是 列表切片得到的结果还是一个列表类型,哪怕最后切片只得到一个数据。也是列表类型的数据
print(names[0:3]) #索引0-2的元素
print(names[0::2]) #步长为2,索引0-2的元素
print(names[::-1]) #步长为1,倒序遍历
print(names[3:0:-1]) #步长为-1,倒序遍历,索引3 2 1
1.3. 列表的循环遍历
1.3.1. for循环
names=["张三","李四","王五","赵六"]
for name in names:
print(name)
最基本的列表循环遍历,将列表中的每一个元素分别赋值给name变量,然后进行打印展示。
1.3.2. for循环第二种方式
names=["张三","李四","王五","赵六"]
#先获取列表的长度
len=len(names)
#长度范围从0到len
for i in range(0,len):
#根据下标获取元素
print(names[i])
1.3.3. while循环遍历
names=["张三","李四","王五","赵六"]
#先获取列表的长度
len=len(names)
i=0
while i < len:
print(names[i]) #也是通过遍历下标,在通过下标来获取对应的元素展示信息
i+=1
1.4. 列表常见的操作
1.4.1. 修改元素
修改元素的时候,只需要获取到对应的下标,就可以重新赋值,就完成了修改
nums[1]=100 #注意下标一定要是存在的下标才可以
1.4.2. ** append 增加元素**
names=["张三","李四","王五","赵六"]
names.append("周七")
print(names) #添加的名字会显示再names列表的最后位置
1.4.3. extend 可以将另外一个集合中的元素逐一添加到列表中
groupNames=["张三","李四","王五","赵六"]
group2=["哈哈","吼吼"]
groupNames.extend(group2)
print(groupNames) #将小列表中的两个内容逐一添加到了大列表中
1.4.4. insert 在指定位置插入元素
insert(index,object) #在指定位置处插入元素object
nums=[1,3,4,5]
nums.insert(0,1)#在0索引值处插入1
nums.insert(1,8)#在1索引值处插入8
print(nums)
1.4.5. 查找元素 in
python中常见的查找方法为:
in(存在),如果存在那么结果为True,否则为False
not in (不存在),如果不存在那个结果为True,否则为False
姓名查找案例:
names=["张三","李四","王五"]
name=input("请输入要查询的姓名?\n")
if name in names:
print("存在")
else:
print("不存在")
1.4.6. index count
index 获取某元素在列表中的索引值
count 获取元素在列表中出现的次数
names=["张三","李四","王五","李四","王五"]
name="李四"
print(names.index(name))#查找索引
print(names.count(name))#查找个数
1.4.7. 删除元素
del:根据元素下标进行删除
starNames=["张三","李四","王五","李四","王五"]
#del 根据下标进行删除
del starNames[2]
print(starNames) #["张三","李四","李四","王五"]
pop:删除最后一个元素,并能获取到最后一个
lastName=starNames.pop()
print(lastName)#王五
print(starNames)#["张三","李四","李四"]
remove:根据元素的值进行删除
starNames.remove("李四")#["张三","李四"]
print(starNames)
1.4.8. reverse 反转 sort 排序
reverse
scores=[89,78,90,70,100]
scores.reverse()#将原来的反过来 #[100,70,90,78,89]
sort
scores=[89,78,90,70,100]
scores.sort() #默认从小到大[70,78,89,90,100]
scores.sort(reverse=True) #反转成从大到小[100,90,89,78,70]
print(scores)
1.4.9. 冒泡排序
冒泡排序:及将列表中的数字按从小到大的顺序进行排序
ages = [123,23,1,45,67,8,90]
for i in range(0,len(ages)-1):
for j in range(0,len(ages)-1-i):
if ages[j] > ages[j+1]:
ages[j],ages[j+1] = ages[j+1],ages[j]
print(ages)
1.5. 列表的嵌套
一个学校,有三个班级,班级里边分别有一些学生。用列表实现。分别 计算每个班级的人数,并把每个班级的学生信息打印出来。
allNames=[["张三","李四","王五"],["小黑","小白"],["如花","小强","鬼见愁","鬼脚七"]]
i=1
for names in allNames:
print("班级%d人数是%d"%(i,len(names)))
i+=1
for name in names :
print("班级%d班学生姓名:%s"%(i,name))
1.6. 列表案例:
1.6.1. 案例1
编程实现一个元素全为数字的列表,求最大值、最小值
nums=[10,9,100,80,75,10,3]
1:
#排序
#nums.sort()#正序
#print("最小值",nums[0],"最大值",nums[len(nums)-1])
2:
#先定义第一个就是最大值
max=nums[0]
#先定义第一个就是最小值
min=nums[0]
for num in nums:
#认为第一个就是最大值
#之后的和最大值比较,如果比这个最大值大,最大值等于该值
if num>max:
max=num
if num<min:
min=num
print("最大值",max,"最小值",min)
3:
#根据下标获取最大值
maxIndex=0
minIndex = 0
for n in range(0,len(nums)):
if nums[n] > nums[maxIndex]:
maxIndex=n
print("最大值",nums[maxIndex])
if nums[n] < nums[minIndex]:
minIndex=n
print("最小值",nums[minIndex])
4:
print(max(nums)) 方法 最大值
print(min(nums)) 方法 最小值
1.6.2. 案例
计算每个班级学生总成绩
#计算每个班级的总成绩
score = [[99,89,79,69],[98,88,78,68,58],[97,87,77]]
#班号
i = 1
for s in score:#s表示每个班级的列表
#定义sum记录每个班级的总成绩
sum = 0
for a in s:#每个班级中学生的分数
sum = sum + a
print('%d班的总成绩是%d'%(i,sum))
#班号自增
i += 1
2. 元组
python中元组和列表类似,
不同之处在于元组的元素不能更改,元组使用小括号,list使用中括号。
但是整个列表可以被删除
tuple=("abc","bcd","efg")
2.1. 根据下标和切片获取元素
print(tuple[0]) #abc
print(tuple[0:1]) #abc bcd efg
2.2. 元组中内置函数count index
tuple=("abc","bcd","efg","bcd")
print(tuple.index("abc")) #0
print(tuple.count("bcd")) #2
-
案例:
1:
使用tuple嵌套list,录入个人信息,(个人的姓名,年龄,性别)并将个人信息遍历打印。准备空的tuple infos=([],[],[],[],[]) for i in range(0,3): userName=input("请输入姓名:\n") age=int(input("请输入年龄:\n")) sex=input("请输入性别:\n") #获取列表 list=infos[i] list.append(userName) list.append(age) list.append(sex) #整体打印 print(infos)
2:
学员信息查询,在三个班级中,查找张三信息,判断张三是否存在,张三属于第几个班级。name=input("请输入要查找的姓名:\n") classes=[["李斯","赵高","秦二世"],["王五","张三","周⑦"],["哈哈","呵呵","吼吼"]] #定义标识符号 flag=False #认为不存在 #遍历 num=0 #定义学生班级号 snum=0 for cs in classes: #进行班级第二层遍历 for c in cs: #如果名字相等 if name==c: flag=True #找到了对应的学生,记录班级 snum=num+1 num+=1 if flag: print(name+"存在班级号是%d"%snum) else: print(name+"不存在")
3.3. 试做题:
将字符串的年月日 时分秒依次存入列表
4. 自己练习一下:
作业1:分别录入三组数据:使用循环控制,每组录入5个数据。录入结束,能够打印出所有信息。
作业2:登陆操作:用户名和密码及进行录入判断 当用户名是Colin 密码是123456的时候显示登录成功 。如果密码和用户名录入错需要循环录入。并且录入错误次数超过三次提示:账号已锁。并且停掉循环