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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容