• 巨蟒python全栈开发-第4天 列表&元组&range


    今日内容大纲
    1. 什么是列表
      定义: 能装对象的对象
      在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求

      列表存在索引和切片. 和字符串是一样的.

    2. 相关的增删改查操作(重点)
      添加:
        1. append() 追加
        2. insert(位置, 元素) 插入指定元素到指定位置
      删除:
        1. pop(index) 根据索引删除
        2. remove(元素) 根据元素删除
      修改:
        索引修改
        lst[索引] = 元素
      查询:
        for循环.

    3. 列表的嵌套
      多个列表互相嵌套

    4. 列表的其他操作
      1. count() 计数
      2. sort() 排序 reverse = True
      3. reverse() 翻转
      4. len() 求长度

    5. 什么是元组
      能装对象的对象. 不可变数据类型. 一旦确认好. 不可更改
      只读列表
      可以迭代

    6. 元组的嵌套
      和列表一样.都可以互相嵌套.
      元组的不可变: 指向不变

    7. range(重点, 难点)
      只要会数数就行
      range(n) [0, n)
      range(m,n) [m, n)
      range(m,n,p) [m,n) 每隔p取一个

    8.# 重点

      for i in range(len(lst)):
      i 索引
      lst[i] 元素

    DAY4  -基础数据类型之(list,tuple)

    本节主要内容:

      1.列表

      2.列表的增删改查

      3.列表的嵌套

      4.元组和元组的嵌套

      5.range

    一.列表

    1.1 列表的介绍

      列表是python的基础数据类型之⼀ ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型:

    列表相比于字符串. 不仅可以存放不同的数据类型. 而且可以存放⼤量的数据. 32位 python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.⽽且列 表是有序的(按照你保存的顺序),有索引, 可以切片方便取值.

    2.2 列表的索引和切片

      列表和字符串⼀样也拥有索引:

      列表的切片:

    ⼆. 列表的增删改查

    1. 增, 注意, list和str是不⼀样的. lst可以发生改变. 所以直接就在原来的对象上进行了操作

    2. 删除 pop, remove, clear, del

    3. 修改 索引切片修改

    4. 查询, 列表是⼀个可迭代对象, 所以可以进⾏for循环

    5. 其他操作

    三. 列表的嵌套

      采用降维操作,⼀层⼀层的看就好,就没有问题

    四. 元组和元组嵌套 元组: 俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之⼀, 用小括号括起来, 里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能 改.

    关于不可变, 注意: 这里元组的不可变的意思是子元素不可变,而子元素内部的子元素是可 以变, 这取决于子元素是否是可变对象. 元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组

    元组也有count(), index(), len()等⽅法. 可以自己测试使用

    五. range range可以帮我们获取到⼀组数据. 通过for循环能够获取到这些数据.

    今日作业:

    1.写代码,有如下列表,按照要求实现每⼀个功能

    # li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    # 1)计算列表的⻓度并输出
    ''''''
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    print(len(li))
    '''
    # 2)列表中追加元素"seven",并输出添加后的列表
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.append('seven')  #这部分不可以直接写在append里边
    print(li)
    '''
    # 3)请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表
    '''#两种理解方式
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.insert(1,'Tony')  #这部分不可以直接写在append里边
    print(li)
    
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.insert(0,'Tony')
    print(li)
    '''
    # 4)请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li[1]='Kelly'
    print(li)
    '''
    # 5)请将列表l2=[1,"a",3,4,"heart"]的每⼀个元素添加到列表li中,⼀⾏代码实
    # 现,不允许循环添加。
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    l2=[1,"a",3,4,"heart"]
    li.extend(l2)
    print(li)
    '''
    # 6)请将字符串s = "qwert"的每⼀个元素添加到列表li中,⼀⾏代码实现,不
    # 允许循环添加。
    '''
    #重点复习,从最大值索引加1开始切片
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    s="qwert"
    li[5:]=s
    print(li)
    '''
    
    '''
    # 7)请删除列表中的元素"eric",并输出添加后的列表
    #这是错题不做
    '''
    # 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    del li[1]
    print(li)
    '''
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.pop(1)
    print(li)
    '''
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.remove('WuSir')
    print(li)
    '''
    
    # 9)请删除列表中的第2⾄4个元素,并输出删除元素后的列表
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    del li[1:4]
    print(li)
    '''
    # 10)请将列表所有得元素反转,并输出反转后的列表
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    li.reverse()
    print(li)
    '''
    # 11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    s=li.count('alex')
    print(s)
    '''

     3,写代码,有如下列表,按照要求实现每⼀个功能。

    # lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    # 1)将列表lis中的"tt"变成⼤写(⽤两种⽅式)。
    '''
    方法一:
    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][0]='TT'
    print(lis)
    '''
    '''
    #方法二:
    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][0]=lis[3][2][1][0].upper()
    print(lis)
    '''
    # 2)将列表中的数字3变成字符串"100"(⽤两种⽅式)。
    '''#列表中有两个三,在这里我只实现一个3,做下实验
    # 方法一:
    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][1]='100'
    print(lis)
    '''
    '''
    #方法二:
    lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    lis[3][2][1][1]=str(lis[3][2][1][1]+97)
    print(lis)
    '''
    # 3)将列表中的字符串"1"变成数字101(⽤两种⽅式)。
    '''
    #方法一 lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] lis[3][2][1][2]=int(lis[3][2][1][2])+100 print(lis) ''' """ #方法二: lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"] lis[3][2][1][2]=101 print(lis) """
    4.请⽤代码实现:
    # li = ["alex", "eric", "rain"]
    # 利⽤下划线将列表的每⼀个元素拼接成字符串"alex_eric_rain"
    '''#重点记忆
    li = ["alex", "eric", "rain"]
    s=''
    for i in li:
        s+=i+'_'
    s=s.rstrip('_')
    print(s)
    '''
    
    '''
    li = ["alex", "eric", "rain"]
    li='_'.join(li)
    print(li)
    '''
    
    '''#while方法实现
    li = ["alex", "eric", "rain"]
    count = 0
    ll = ""
    while count <= len(li) -1:
        ll =ll + (li[count])+"_"
        count += 1
    print(ll.strip("_"))
    '''
    
    '''
    li = ["alex", "eric", "rain"]
    count = 0
    ll = ""
    while count <= len(li):
        ll =ll + (li[count])+"_"
        count += 1
    print(ll.strip("_"))
    '''
    5.利⽤for循环和range打印出下⾯列表的索引。
    # li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    '''
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    for i in range(len(li)):
        print(i,li[i])
    '''

    6.利⽤for循环和range找出100以内所有的偶数并将这些偶数插⼊到⼀个新列表中。

    l=[]
    for i in range(101):
        if i%2==0:
            l.append(i)
    print(l)

    7.利⽤for循环和range 找出50以内能被3整除的数,并将这些数插⼊到⼀个新列表中

    l7=[]
    for i in range(51):
        if i%3==0:
            l7.append(i)
    print(l7)

    8.利⽤for循环和range从100~1,倒序打印。

    '''#正序打印1-100
    for i in range(1,101):
        print(i)
    '''
    '''
    #倒叙打印100-1//重点记忆//
    for i in range(100,0,-1):
        print(i)
    '''

    9.利⽤for循环和range从100~10,倒序将所有的偶数添加到⼀个新列表中,然后对列表的元素进⾏筛选,将能被4整除的数留下来。

    l=[]
    k=[]
    for i in range(100,9,-2):
        l.append(i)
    print(l)
    for s in l:
        if s%4==0:
            k.append(s)
    print(k)

    10.利⽤for循环和range,将1-30的数字⼀次添加到⼀个列表中,并循环这个列表,将能被3整除的数改成*。

    '''#重点记忆这道题,尤其是后半部分
    l1=[]
    for i in range(1,31):
        l1.append(i)
    print(l1)
    k=0
    for s in l1:
        if s%3==0:
            l1[k]="*"
        k+=1
    print(l1)
    '''
    11,查找列表li中的元素,移除每个元素的空格,并找出以"A"或者"a"开头,并
    以"c"结尾的所有元素,并添加到⼀个新列表中,最后循环打印这个新列表。
    li = ["TaiBai ", “ale xC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
    '''
    #重点记忆:前半部分,怎么去掉空格的,深入了解方法
    lk=[]
    s=0
    li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
    while s<len(li):
        li[s]=li[s].replace(" ",'')
        s+=1
    print(li)
    for i in li:
        if (i.startswith('A') or i.startswith('a'))and i.endswith('c'):
            lk.append(i)
    print(lk)
    '''
    12,开发敏感词语过滤程序,提示⽤户输⼊评论内容,如果⽤户输⼊的内容中
    包含特殊的字符:
    敏感词列表 li = ["苍⽼师", "东京热", "武藤兰", "波多野结⾐"]
    则将⽤户输⼊的内容中的敏感词汇替换成等⻓度的*(苍⽼师就替换***),并添
    加到⼀个列表中;如果⽤户输⼊的内容没有敏感词汇,则直接添加到上述的列
    表中。
    '''
    #重点记忆,没做出来
    #字符串操作,利用列表的遍历作为条件,进行字符串的操作replace
    l=[]
    li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
    s=input('请输入评论内容:')
    for i in li:
        s=s.replace(i,len(i)*'*')
    l.append(s)
    print(l)
    '''
    '''
    l=[]
    li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
    while 1:
        s=input('请输入评论内容:')
        if s.upper()=='Q':
            break
        for i in li:
            s=s.replace(i,len(i)*'*')
        l.append(s)
        print(l)
    '''
    13,有如下列表
    li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
    循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。
    我想要的结果是:
    1
    3
    4
    alex
    3
    7,
    8
    taibai
    5
    ritian
    '''
    重点复习:没有思路,做这个题目
            #用==,而不是is
            #先判断列表
            #打印出来的结果没有引号
    li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
    for i in li:
        if type(i)==list:
            for ii in i:
                if type(ii) is str:
                    print(ii.lower())
                else:
                    print(ii)
        else:
            if type(i)==str:
                print(i.lower())
            else:
                print(i)        
    '''
    14. 把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
    要带着⼈名录⼊, 例如: 张三_44
    '''#这道题目没做出来//第一版问题比较多
    sum=0
    l=[]
    while 1:
        k=input('按Q退出,其他键继续录入成绩:').upper()
        if k=='Q':
            break
        s=input('请输入名字和成绩例如,张三_44:')
        l.append(s)
    print(l)
    
    avg=input('按1求平均值,其他键退出:')
    if avg==1:
        for i in l:
            a,b=i.split('_')
            sum+=int(b)
    print('平均值是:',sum/len(l))
    '''
    '''#参考高手版本
    #思路整理:两个input合成1句话写
    #sum在下边用,直接写在下边
    #不用判断输入什么,只要第一个input有,输入Q,就直接退出
    l=[]
    while 1:
        k=input('按Q退出,或者请输入学生的姓名和成绩(姓名_成绩):').upper()
        if k=='Q':
            break
        l.append(k)
    print(l)   #在这里可以清晰看到输入的哪些姓名_成绩
    sum=0
    for i in l:
        a,b=i.split('_')   #这里用到了解包
        sum+=int(b)
    print('平均值是:',sum/len(l))
    '''
    
    '''#高手版本
    lst = []
    while 1:
        s = input("请输入学生的姓名和成绩(姓名_成绩),输入Q退出:")
        if s.upper() == "Q":
            break
        lst.append(s)
    sum = 0
    for i in lst:
        a = i.split("_")
        sum += int(a[1])
    print(sum / len(lst))
    '''
    15. 敲七游戏. 从0开始数数. 遇到7或者7的倍数要在桌上敲⼀下. 编程来完成敲七
    '''#第一版
    s=int(input('请输入数字:'))
    cou=0
    l=[]
    for i in range(1,s+1):
        l.append(i)
    for i in l:
        if i%7==0:
            l[cou]='咣'
        cou+=1
    print(l)
    '''
    
    '''
    #第二版
    #思路:1.输入数字,定义索引常量0,定义空列表
    #     2.用for,把输入数字的1到数字,添加到列表中
    #     3.用for遍历,判断是不是7的倍数,或者数字里含有7
    #     4.对这些数字进行修改
         #5.打印   
    s=int(input('请输入数字:'))
    cou=0
    l=[]
    for i in range(1,s+1):
        l.append(i)
    for i in l:
        if i%7==0 or '7' in str(i):
            l[cou]='咣'
        cou+=1
    print(l)
    '''
    
    '''#第三版:高手优化版本 
    #思路:1.创建空列表,输入任意数字
          2.用for和range,创建1串数字
          3.在for循环中,用if判断是不是7的倍数或者含有数字7,
          4.通过用空列表,进行添加
          5.最后打印列表
    #利用列表进行添加:
    l = []
    n = int(input("输入任意数:"))
    for i in range(1,n+1):
        if i % 7 == 0 or "7" in str(i) :
            l.append("咚")
        else:
            l.append(i)
    print(l)
    
    '''

    16.(升级题) 编写程序. 完成⼼动⼥⽣的筛选. (升级题)

             ⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
    字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
    户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
    择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
    运⾏效果

    多练习这个版本,复习
    count=0
    l=[]
    while count<5:
        shu=input('请输入您心仪的女生(您还可以输入%s个):'%(5-count))
        l.append(shu)
        count+=1
    print('您当前的心仪女生有:')
    a=0
    for i in range(len(l)):   #这个地方要注意
        print(f'编号:{a+1},名字:{l[a]}')
        a+=1
    
    print("请输入你更喜欢的三位女生的编号")
    b=0
    b1=[]
    while b<3:
        b += 1
        better_love=input(f"请输入第{b}个美眉的编号:")
        b1.append(better_love)
    
    c=0
    for i in range(len(b1)):
        print(f'编号:{c+1},名字:{b1[c]}')
        c+=1
    print('最后三选一')
    d=int(input('请输入你最喜欢的人的编号:'))
    print(f'程序帮你选出来了,你最喜欢的是{b1[d-1]}妹子')
    
    
    '''1版
    # count = 5
    # l = []
    # while count > 0:
    #     s = input("请输入你心仪的女生(你还可以输入%s次);" % (count))
    #     l.append(s)
    #     count -= 1
    # print("你当前心仪的女生有:")
    #
    # a = 1
    # for el in l:
    #     print("编号: %s,名字: %s" % (a,el))
    #     a += 1
    # print("请输入你更喜欢的三个女人的编号:")
    #
    # b = 1
    # l1 = []
    # while b <= 3:
    #     s2 = input("请输入第%s个美眉的编号;" % (b))
    #     l1.append(l[int(s2)-1])
    #     b += 1
    # print("更喜欢的新鲜出炉;")
    #
    # a1 = 1
    # l2 = []
    # for el1 in l1:
    #     print("编号: %s,名字: %s" % (a1,el1))
    #     a1 += 1
    # print("最后了,三选一:")
    # s3 = input("输入你最喜欢的人的编号:")
    # l2.append(l1[int(s3)-1])
    # print("程序帮你选出来了,你喜欢的是%s妹子." % (l2[0]))
    '''
    
    #2版
    # lst = []
    # lst2 = []
    # count = 0
    # count2 = 0
    # while count < 10:
    #     xindong = input(f"请输入你的心动女生(你还可以输入{10 - count}个:)")
    #     lst.append(xindong)
    #     count += 1
    # print('您当前的心仪女生有:')
    # for i in range(len(lst)):
    #     print(f"编号:{i + 1}, 名字:{lst[i]}")
    # print('请输入你更喜欢的三个女生的编号')
    # while count2 < 3:
    #     xindong2 = int(input(f"请输入第{1 + count2}个美眉的编号:"))
    #     lst2.append(lst[xindong2 - 1])
    #     count2 += 1
    # print('更喜欢的新鲜出炉')
    # for i in range(len(lst2)):
    #     print(f"编号:{i + 1}, 名字:{lst2[i]}")
    # print('最后三选一')
    # xindong3 = int(input("请输入你喜欢的人的编号"))
    # print(f"程序帮你选出来了,你最喜欢的妹子是{lst2[xindong3 - 1]}")
     
  • 相关阅读:
    mysql query insert中文乱码
    git rebase
    ubuntu下怎么合并windows下分割的zip包
    [Matlab]双线性变换法设计数字带阻滤波器
    [Matlab]双线性变换法设计数字带通滤波器
    [Matlab]双线性变换法设计数字高通滤波器
    [Matlab]双线性变换法设计数字低通滤波器
    [Matlab]四种IIR滤波器纹波特性对比
    [Matlab]椭圆滤波器设计:低通、高通、带通和带阻
    [Matlab]切比雪夫Ⅱ型滤波器设计:低通、高通、带通和带阻
  • 原文地址:https://www.cnblogs.com/studybrother/p/10040833.html
Copyright © 2020-2023  润新知