zoukankan      html  css  js  c++  java
  • python中关于列表和元祖的基础知识

    一,列表

    1)定义:

    []内以逗号分隔,按照索引,存放各种数据类型,每一个位置代表一个元素

    2)特性:

    1 可存放多个值
    2 按照从左到右的顺序定义列表元素,下标为零开始顺序访问,有序
    3可修改指定索引位置对应的值,是可变的,

    3)列表的操作和字符串一样

      1,切片是和字符串一样的

    #例1
    lst=["猪八戒","孙悟空","唐僧","沙僧",["观音","如来","蓝灯","十八罗汉",["太上老君","太白金星","哪吒","木吒","金吒"]]]
    print(lst[3])
    print(lst[4][4][3])
    print(lst[4][4][2:5:2])
    print(lst[::-2])
    print(lst[::-1])
    #例2
    lst = ["华仔", '赫本', '赵四', "孙艺珍", '车太贤']
    print(lst[3][1]) # 索引拿到的是元素
    print(lst[-3])
    print(lst[1:3]) # 切片也一样
    print(lst[::-2]) # 反着切也OK

    2.列表的增删改查

    #_1新增
    lst = ["西红柿首富","无双", "", "超能泰坦"]
    print(lst.append("123")) # 可变的数据类型 没有返回值
    # 追加。 添加到末尾(重点)
    lst.append("找到你")
    lst.append("鬼子来了")
    lst.append("前任4")
    print(lst)
    # 插入
    lst.insert(0, "建国大业") # 插入, 效率不高. 索引的变更
    lst.insert(2, "美国往事")
    迭代添加
    lst.extend("周杰伦")   # ["周杰伦"][0]
    lst.extend(["倚天屠龙记", "乡村爱情"])
    print(lst)
    #_2删除
    lst = ["杰森斯坦森", "勒布朗詹姆斯", "尼古拉斯凯奇", "郭达森"]
    pop() 弹出一个, 默认弹出最后一个
    lst.pop()
    lst.pop(1) # 可以弹出指定位置的元素
    ret = lst.pop() # 返回值是被删除的元素
    ret = lst.pop(2)
    print(ret)
    remove   #  移除 , 指定元素, 删除第一个
    lst.remove("勒布朗詹姆斯") #
    lst.remove("尼古拉斯凯奇")
      #切片删除
    del lst[2] # 类似pop
    del lst[2:] # 批量删除
    del lst[1:5:2] # 切片删除
    lst.clear() # 清空列表
    print(lst)
    #_3修改
    lst = ["周杰伦", "周笔畅", "周星驰", "周润发"]
    lst[1] = "周星星" # 指定索引去修改. (重点)
    lst[1:3] = "马虎疼" # 迭代修改
    lst[1:3] = ["马虎疼"]
    lst[::2] = ["马虎疼", "王健林"] # 当切片出来的内容步长如果不是1:元素的个数必须要匹配
    lst[::2] = "马云"
    print(lst)
    #_4查询
    lst = ["胡辣汤", "猪脚饭", "吱吱冒油的猪蹄子", "猪头肉"]
    food表示列表中的每一项
    for food in lst: # 列表可以使用for循环。 list是一个可迭代对象
        print(food)
    lst = [1, 2, 4, 21, 4, 2, 22, 123, 4, 68]
    lst.sort() # 排序. 从小到大. 升序
    lst.sort(reverse=True) # 倒序。 降序. 从大到小
    lst.reverse() # 翻过来
    print(lst)
    print(len(lst)) # 长度
    #_5列表的嵌套
    lst = [["葫芦娃", "黑猫警长","西游记"], ["武斗乾坤", "wahaha", "斗破苍穹", "盘龙"], ["三体", "明朝那些事儿"]]
    print(lst[1][0])
    print(lst[2][2][0])
    #_降维: 一层一层的找
    # 把wahaha中的a换成b
    lst[1][1] = lst[1][1].replace("a", "b") # 多层嵌套的时候如果进行操作。 需要重新赋值。 原因是替换的内容是一个 字符串
    lst[1].insert(1, "大闹天宫") # 对于内部元素如果是可变的数据类型。 直接改就行了
    print(lst)

    二,元组

    定义: tuple表示 ,  由()组成内部元素用逗号隔开
    特点:不可变  只读列表。 也有索引 和切片功能
    t = ("周杰伦", "哇哈哈", "爽歪歪", "酸酸乳", "三鹿奶粉", "AD钙奶")
    print(t[1])
    print(t[1:5]) # 切片的结果是一个元组
    print(t[1:5:2])
    t[1] = "益力多" # TypeError: 'tuple' object does not support item assignment
    
    #元组的不可变. 元组的不可变指的是元组内部第一层元素的内存地址
    t = ("张无忌", "周芷若", "赵敏")
    t[0] = "胡辣汤"
    t = ("周润发", "周星驰", ["渣渣辉","古天绿","陈小春"])
    t[2].append("李嘉诚")
    print(t)
    lst1 = [] # 新列表
    lst2 = list() # 新列表
    print(lst1, lst2)
    t1 = () # 元祖
    t2 = tuple() # 元祖
    print(t1, t2)
    # 元组如果只有一个元素。必须加逗号
    t1 = (1, 3, 5, 7, 9,) # () 运算符  优先级
    lst = ["哈哈", ]
    print(t1)
    print(lst)

    三,for循环用来查找列表中元素和索引

    lst = ["语文", "数学", "英语", "代数", "体育", "生物", "生物第二学期"]
    for ke in lst: # 默认的for循环会忽略掉索引
        print(ke)
    # 获取到元素的索引和元素-背下来
    for i in range(len(lst)):
        # i    #是索引
        # lst[i]   #获取元素
        print(i, lst[i])
    
    s = "我今天下午要吃鸡"
    for i in range(len(s)):
        print(i, s[i])

    四,练习

    li=["alex","WuSer","ritian","wenzhou"]
    1)计算列表的长度并输出
    print(len(li))
    2)列表中追加元素"seven"并输出添加后的列表
    li.append("seven")
        print(li)
    3)请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表
    li.insert(1,"Tony")
    print(li)
    4) 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
    li[2]=" Kelly"
    print(li)
    5)请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实
    现,不允许循环添加
    l2=[1,"a",3,4,"heart"]
    li.extend(l2[0:])
    print(li)
    print(li)
    6)请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不
    s="qwert"
    li.extend(s)
    print(li)
    7) 添加"eric"元素,并输出结果
    li.append("eric")
    print(li)
    8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
    li.pop(2)
    print(li)
    9)请删除列表中的第2⾄4个元素,并输出删除元素后的列表
    del li[2:5]
    print(li)
    10)请将列表所有得元素反转,并输出反转后的列表
    li.reverse()
    print(li)
    11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
        count=0
        for i in li :
            if [i]==["alex"] :
                count +=1
                continue
        print(count)

    2,写代码,有如下列表,利用切片实现每一个功能
    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    # 1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
    l1=li[0:3]
    print(l1)
    # 2)通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
    l2=li[3:6]
    print(l2)
    # 3)通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
    l3=li[0::2]
    print(l3)
    # 4)通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
    l4=li[1:6:2]
    print(l4)
    # 5)通过对li列表的切片形成新的列表l5,l5 = ["c"]
    l5=[li[-1]]
    print(l5)
    # 6)通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
    l6=li[-3::-2]
    print(l6)
    3,写代码,有如下列表,按照要求实现每一个功能。
    lis = [2, 5, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
    1)将列表lis中的"tt"变成大写(用两种方式)。
    方式1
    lis[3][2][1][0]=lis[3][2][1][0].upper()
    print(lis)
    方式2
    lis[3][2][1][0]=lis[3][2][1][0].replace("tt","TT")
    print(lis)
    2)将列表中的数字3变成字符串"100"(用两种方式)。
    方式1
    lis[3][2][1][1] = "100"
    方式2
    lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
    方式三
    lis[3][2][1][1] = str(lis[3][2][1][1]).replace("3", "100")
    3)将列表中的字符串"1"变成数字101(用两种方式)。
    方式1
    lis[3][2][1][2] = int(lis[3][2][1][2]+"01")
    方式2
    lis[3][2][1][2] = int(lis[3][2][1][2].replace("1", "101"))
    4, 请用代码实现:
    li = ["alex", "eric", "rain"] 利用下划线将列表的每一个元素拼接成字符串 "alex_eric_rain"
    #方法一
    li=["alex","eric","rain"]
    li[0:] =["alex_eric_rain"]
    print(li)
    #方法二
    li = ["alex", "eric", "rain"]
    s = ""
    for name in li:
        s += name+"_"
    print(s.strip("_"))
    print(s[:len(s)-1]) # 当我确定最后一个一定是_的时候
    #方法三
    print("_".join(li))
    
    5.利用for循环和range打印出下面列表的索引。
    li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
    for index in range(0,len(li)):
        print(index)
    6.利⽤for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
    ko=[]
    for  i in range(0,100):
        if i%2==0:
            ko.append(i)
    print(ko)
    7.利用for循环和range找出50以内能被3整除的数,并将这些数插入到一个新列表中。
    ko=[]
    for i in range(0,50):
        if i%3 ==0:
            ko.append(i)
    print(ko)
    8.利⽤for循环和range从100~1,倒序打印。
    ko=[]
    for i in range(1,101):
        ko.append(i)
    print(ko[::-1])
    9.利⽤for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。
    ko=[]
    for i in range(10,100):
        if i%2==0:
            ko.append(i)
    for j in ko:
        if j%4==0:
            print(j)
    10,利用for循环和range,将1 - 30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成 *
    ko=[]
    for i in range(1,30):
        ko.append(i)
    for j in range(len(ko)):
        if ko[j]%3 ==0:
            ko[j] = "*"
    print(ko)
    11,查找列表li中的元素,移除每个元素的空格,并找出以 "A"或者"a"开头,并以"c"结尾的所有元素,并添加到一个新列表中,
    最后循环打印这个新列表。li = ["TaiBai ", “alexC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
    li = ["TaiBai ", "alexC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
    ko=[]
    for  i in li :
        li=i.strip()
        if i.capitalize().startswith("A") and i.endswith("c")==1:
              ko.append(i)
    print(ko)
    

      


    12,开发敏感词语过滤程序,提示⽤用户输入评论内容,如果用户输户的内容中包含特殊的字符:
    敏感词列表li = ["苍老师", "东京热", "武藤兰", "波多野结⾐"]
    则将用户输入的内容中的敏感词汇替换成等长度的 *(苍老师就替换 ** *),并添
    加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列 表中。
    lis=[]
    li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
    content= input("请输入评论:")
    for i in li :
         if i  in content:
            content = content.replace(i,"*"*len(i))
    lis.append(content)
    print(content)
    13,有如下列表
    li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
    #循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。我想要的结果是:
    '''1
    3
    4
    "alex"
    3
    7,
    8
    "taibai"
    5
    ritian
    '''
    for el in li:
        if type(el) == list:
            for el2 in el:
                if type(el2) == str:
                    print(el2.lower())
                else:
                    print(el2)
        else:
            if type(el)==str:
                print(el.lower())
            else:
                print(el)

    14. 把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
    要带着⼈名录⼊, 例如: 张三_44
    lis=[]
    while 1:
        content=input("请输入信息:")
        if content.upper() == "Q":
            break
        lis.append(content)
    #总分
    scot=0
    for i in lis:
        scot += int(i.split("_")[1])
    print(scot)
    #平均分
    print(scot/len(lis))
    15. 敲七游戏. 从0开始数数. 遇到7或者7的倍数要在桌上敲⼀下. 编程来完成敲 七
    lis=[]
    n=int(input("请输入一个数:"))
    for i in range(0,n):
        if i%7==0 or "7" in str(i):
            lis.append("")
        else:
            lis.append(i)
    print(lis)
    16. (升级题) 编写程序. 完成⼼动⼥⽣的筛选. (升级题)
              ⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
    字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
    户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
    择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
    运⾏效果:
    lis=[]
    i=0
    while i< 10 :
        nh="请输入心仪的女生"+"(你还可以输入" + str(10-i) +"个)"
        xd = input(nh+":")
        i+=1
        lis.append(xd)
    index=0
    for j in lis :
        index+=1
        print("编号:"+ str(index) + ", " +"名字:" + j )
    lst=[]
    count=1
    while count<=3 :
        hh="请输入第"+ str(count) + "个美眉的编号:"
        gxh= int(input(hh + ":"))
        count +=1
        lst.append(lis[gxh-1])
    index2 = 0
    for h in lst:
        index2 +=1
        print("编号:" + str(index2) + ", " + "名字:" + h)
    love =int(input("请输入你喜欢的编号:"))
    print("程序选出来了你喜欢的是" + lst[love-1])




































  • 相关阅读:
    和我一起看API(一)你所不知道的LinearLayout补充
    SQLSERVER常见系统函数之字符串函数(一)
    C#使用ADO.NET访问数据库(一)
    SQLSERVER基础语句(一)
    Vue 项目部署之iis
    XiaoQi.Study 之 .net core webapi (三)
    XiaoQi.Study 之 .net core webapi (二)
    XiaoQi.Study 之.net core webapi(一)
    Vue 学习笔记(四)
    Vue 学习笔记(二)
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/9838787.html
Copyright © 2011-2022 走看看