系统学测试 - python的列表和元组使用

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. 案例:

    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的时候显示登录成功 。如果密码和用户名录入错需要循环录入。并且录入错误次数超过三次提示:账号已锁。并且停掉循环

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容