• python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套


    列表增删改查

    增加 append
    li = ['taibai','zy','nvshen']
    li.append('aa')
    print(li) #['taibai', 'zy', 'nvshen', 'aa']
    #需求:循环,交互,退出
    # li = ['taibai','zy','nvshen']
    #
    # while 1:
    #     username = input('请输入:')
    #     if username.strip().upper() == 'Q'.upper():
    #         print('成功退出')
    #         break
    #     else:
    #         li.append(username)
    #     print(li)
    insert 插入
    li.insert(3,'bb')
    print(li) #['taibai', 'zy', 'nvshen', 'bb', 'aa']
    extend 迭代迭代每一个元素
    li.extend('abcdfg')
    print(li) #['taibai', 'zy', 'nvshen', 'bb', 'aa', 'a', 'b', 'c', 'd', 'f', 'g']
    li.extend([1,2,3,'vc',[1,2,3]]) #迭代列表里的每一个元素
    print(li) #['taibai', 'zy', 'nvshen', 'bb', 'aa', 'a', 'b', 'c', 'd', 'f', 'g', 1, 2, 3, 'vc', [1, 2, 3]]
    #pop
    li = ['taibai','zy','nvshen']
    li.pop(0)
    print(li) #['zy', 'nvshen']
    #remove
    
    li.remove('zy')
    print(li) #['nvshen']
    #clear
    
    li.clear()
    print(li)#[]

    删除整个列表del

    li =[1,2,3,'taibai']
    del li
    print(li)

    li = ['taibai','zy','nvshen']
    li[0] = 'z'   #右边的赋值给左边
    print(li) #['z', 'zy', 'nvshen']
    
    print(li[0:2]) #['z', 'zy']
    # li[0:2] = 'zhangyang'
    # print(li) #['z', 'h', 'a', 'n', 'g', 'y', 'a', 'n', 'g', 'nvshen']
    查找列表中每一个元素
    for i in li:
        print(i)
    print(li.index('zy'))  #1
    #切片、索引 查找
    print(li[0]) #z
    print(li[0:2])#['z', 'zy']

    公共方法

    len
    len
    li = ['taibai','zy','nvshen']
    li2 = ['taibai','zy','nvshen',1,[1,2,3]]
    l = len(li)
    l1 = len(li2)
    print(l) #3
    print(l1) #5   #返回列表中有多少元素
    count
    print(li.count('taibai'))#1
    index 找索引
    print(li.index('taibai')) #0
    sort 排序
    li = [1,2,4,5,8,9]
    li.sort()
    print(li) #[1, 2, 4, 5, 8, 9]
    #排序后反转
    li.sort(reverse=True)     #def sort(self, key=None, reverse=False): #默认reverse=False 为正序
    print(li) #[9, 8, 5, 4, 2, 1]
    反转 (不等于排序)
    li = [1,2,4,5,8,9]
    li.reverse()
    print(li) #[9, 8, 5, 4, 2, 1]

    列表的嵌套

    li =['taibai','武藤','苑昊',['alex','egon',89],23]
    #找到藤--找到字符串在进行切片
    print(li[1][1]) #
    print(li[3][0][1]) #l
    
    #找到taibai,改成Taibai在放回去
    li[0]=li[0].capitalize()
    print(li) #['Taibai', '武藤', '苑昊', ['alex', 'egon', 89], 23]
    
    #昊改成日天在放回去
    li[2] ='苑日天'
    print(li) #['Taibai', '武藤', '苑日天', ['alex', 'egon', 89], 23]
    
    li[2]=li[2].replace('','日天')  #字符串只能替换,不能修改
    print(li) #['Taibai', '武藤', '苑日天', ['alex', 'egon', 89], 23]
    
    
    #找到alex 全部变成大写,放回原处
    li[3][0]=li[3][0].upper()
    print(li) #['Taibai', '武藤', '苑日天', ['ALEX', 'egon', 89], 23]

    元组的嵌套

    #元组 (只读列表) 可以被查询,不可以修改,可循环查询,可切片
    # 儿子不能改,孙子可以改   #taibai属于列表(可以修改),列表属于这个元组
    tu =(1,2,3,'alex',[1,2,3,'taibai'],'egon')
    
    print(tu[3]) #alex
    print(tu[0:3]) #(1, 2, 3)
    for i in tu:
        print(i)
    #1
    2
    3
    alex
    [1, 2, 3, 'taibai']
    egon
    
    
    taibai 改成全大写
    tu[4][3]=tu[4][3].upper()
    print(tu) #(1, 2, 3, 'alex', [1, 2, 3, 'TAIBAI'], 'egon')
    
    tu[4].append('sb')
    print(tu) #(1, 2, 3, 'alex', [1, 2, 3, 'TAIBAI', 'sb'], 'egon')

      元祖

    如果元组里面只有一个元素且不加逗号,那此元素是什么数据类型,他就是什么类型
    tu1=(1)
    tu2=(1,)
    print(tu1,type(tu1)) #1 <class 'int'>
    print(tu2,type(tu2)) #(1,) <class 'tuple'>

    tu1=([1])
    tu2=([1],)
    print(tu1,type(tu1)) #1 <class 'int'>
    print(tu2,type(tu2)) #(1,) <class 'tuple'>

    join-->list --str (列表转换成字符串)
    split-->str --list(字符串转换成列表)

    join S.join(iterable) -> str   (范围是可迭代对象,int 和bool不行)
    join-->list --str (列表转换成字符串)
    split-->str --list(字符串转换成列表)
    
    s='alex'
    s1= '_'.join(s)
    print(s1) #a_l_e_x
    s2 = '+'.join(s)
    print(s2) #a+l+e+x
    
    
    l =['taibai','武藤','苑昊']
    l1 =''.join(l)  #返回的是字符串
    print(l1) #taibai武藤苑昊

    range

    #range 相当于一个列表,里面都是数字  range(0,10,2) 首尾+步长
    for i in range(0,100):
        print(i)
    
    for i in range(10,0,-1):  #从10开始,0结束,步长-1
        print(i) # 10,9,8,7,6,5,4,3,2,1

    for循环嵌套

    循环输出列表中元素,包括列表中的列表
    print(type(li)) #<class 'list'>
    li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'wusri']
    
    1)直接循环找出list
    for i in li:
        if type(i) == list:
            for j in i:
                print(j)
        else:
            print(i)
    
    
    2)用索引来找出type=list
    for i in range(len(li)):
        if type(li[i]) == list:
            for j in li[i]:
                print(j)
        else:
            print(li[i])

    相关练习题

    # 习题:
    lis = [2,3,'k',['qwe',20,['kl',['tt',3,'1']],89],'ab','asv']
    1)将列表list中的'tt'变成大写(两种方式)
    2)将列表中的数字3变成字符串'100'(两种)
    3) 将列表中的字符串'1'变成数字101(两种)
    1.
    lis[3][2][1][0] = 'TT'
    print(lis) #[2, 3, 'k', ['qwe', 20, ['kl', ['TT', 3, '1']], 89], 'ab', 'asv']
    
    lis[3][2][1][0]=lis[3][2][1][0].upper()
    print(lis) #[2, 3, 'k', ['qwe', 20, ['kl', ['TT', 3, '1']], 89], 'ab', 'asv']
    
    lis[3][2][1][0]=lis[3][2][1][0].replace('tt','TT') #替换字符串replace
    print(lis) #[2, 3, 'k', ['qwe', 20, ['kl', ['TT', 3, '1']], 89], 'ab', 'asv']
    
    2.
    lis[1] = '100'
    lis[3][2][1][1] = '100'
    print(lis)#[2, '100', 'k', ['qwe', 20, ['kl', ['tt', '100', '1']], 89], 'ab', 'asv']
    
    lis[3][2][1].remove(3)
    # lis[3][2][1].insert(1,'100')
    # print(lis)#[2, 3, 'k', ['qwe', 20, ['kl', ['tt', '100', '1']], 89], 'ab', 'asv']
    3.
    lis[3][2][1][2] = 100
    print(lis) #[2, 3, 'k', ['qwe', 20, ['kl', ['tt', 3, 100]], 89], 'ab', 'asv']
    
    
    lis[3][2][1][2]=int(lis[3][2][1][2].replace('1',str(100)))
    print(lis)#[2, 3, 'k', ['qwe', 20, ['kl', ['tt', 3, 100]], 89], 'ab', 'asv']
    习题:
    1/如有下值li=[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存在字典的一个key中。if 将所有小于66的值保存在字典的2个key中:
    即:{'k1':大于66的所有值列表,'k2':小于66的所有值列表}
    li=[11,22,33,44,55,66,77,88,99,90]
    l1=[]
    l2=[]
    dic={}
    for i in li:
        if i == 66:
            continue
        if i >66:
            l1.append(i)
    
        else:
            l2.append(i)
    dic.setdefault('key1',l1)
    dic.setdefault('key2',l2)
    print(dic)

    2/输出商品列表,用户输入序号,显示用户选中的商品

    商品li=['手机','电脑','鼠标垫','游艇']
    要求:
    1.页面显示 序号+商品名称,如:
    1 手机
    2 电脑
    ...
    2.用户输入选择的商品序号,然后打印商品名称
    3.如果用户输入的商品序号有误,则提示显示有误,并重新输入。
    4.用户输入Q或者q,退出程序。

    li=['手机','电脑','鼠标垫','游艇']
    
    for i in li:
        print('{}	{}'.format(li.index(i)+1,i))
    
    
    while 1:
        num = input('请输入选择的商品的序号/输出Q或q退出:')
        if num.isdigit():
            if int(num) <= len(li) and int(num) > 0:
                print(li[int(num)-1])
            else:
                print('输入有误,请重新输入')
        elif num.strip().upper() == 'Q':
                print('成功退出!')
                break
        else:
            print('请重新输入,只能输入号码')
    需求在lis中找到奇数为并做删除操作
    lis=[11,22,33,44,55]
    
    for i in lis:
        if i%2 == 1:
            print(i,type(i))
            lis.remove(i)
            print(lis) #[22, 44]
  • 相关阅读:
    经典51懒人5步速成法
    C语言数组元素的查询
    C语言二维数组
    C语言数组的概念
    C语言基础之水仙花数
    说说M451例程讲解之定时器
    位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
    语音中的关于语音识别的一些知识
    caffe的db_lmdb.hpp文件
    lmdb存储的一些库相关函数
  • 原文地址:https://www.cnblogs.com/hanfe1/p/10228716.html
Copyright © 2020-2023  润新知