学习python的第四天

列表

下标:每个元素在列表中的位置。

列表:是能够存储各种数据的容器。列表是可变的。列表是有序的(下标)。

  1. 创建一个空列表

     list1 = []
    
  2. 可变 – > 增、删、改

    a. 增加元素:append():追加、insert():插入.

    list1.append('python')
    list1.append('Java')
    list1.append('Linux')
    list1.insert(1,'HTML5')
    list1.insert(1,0)
    print(list1)
    #['python', 0, 'HTML5', 'Java', 'Linux']
    

    b.修改元素:通过下标修改元素

    list1[1] = 'C'
    print(list1)
    #['python', 'C', 'HTML5', 'Java', 'Linux']
    

    c.删除元素:del(delete):语法–del 列表[下标]、remove;移除某个元素(彻底删除)、pop(出栈):移除某个元素(删除之后知道删除的是谁)、clear:将列表清空。

    del list1[1]
    print(list1)
    print(list1.remove('Java'))
    print(list1)
    print(list1.pop(0))
    print(list1)
    list1.clear()
    print(list1)
    # ['python', 'HTML5', 'Java', 'Linux']
    # None
    # ['python', 'HTML5', 'Linux']
    # python
    # ['HTML5', 'Linux']
    # []
    

    下标和切片

    下标:每个元素在列表中的位置。

    正向下标,从0开始
    正向下标

    负向下标,从-1开始
    负向下标

list1 = ['蜘蛛侠','环太平洋','海王','复仇者联盟']
print(list1[1],list1[-3])
#环太平洋 环太平洋

下标不能越界

list1[100]
# IndexError: list index out of range
切片:左闭右开区间:从原来的容器中提取元素组成新的容器

切片可以越界。

print(list1[1:3]) 
#['环太平洋', '海王']

变量[M,N,step],M:起始范围(默认从头开始取,0),N结束范围(默认取到尾),step:步长(默认step=1)。

  1. 起始范围和结束范围不写的时候冒号必须存在,步长不写时,冒号可省略。

  2. 步长控制获取的元素,每间隔步长-1个元素获取一个元素(获取的当前元素加上步长 = 下一个要获取的元素)。

    print(list1[1:4:2])
    print(list1[:3:2])
    print(list1[::2])
    print(list1[:])
    print(list1[::-1])  # 倒序输出
    print(list1[4:1])    
    # ['环太平洋', '复仇者联盟']
    # ['蜘蛛侠', '海王']
    # ['蜘蛛侠', '海王']
    # ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟']
    #['复仇者联盟', '海王', '环太平洋', '蜘蛛侠']
    # []
    
  3. M和N必须同符号:step>0,M<N;step<0,M>N.

    print(list1[0:-1])
    #['蜘蛛侠', '环太平洋', '海王']
    
  4. 正向下标和负向下标可组合使用

    练习:

    movies = ['阿甘正传','肖申克的救赎','霸王别姬','三傻大闹宝莱坞','环太平洋','猿人泰山']
    

    a.获取[‘阿甘正传’、‘霸王别姬’、‘环太平洋’]

    print(movies[::2])
    

    b.获取[‘肖申克的救赎’、‘环太平洋’]

    print(movies[1::3])
    

    c.获取[‘环太平洋’、‘霸王别姬’、‘阿甘正传’]

    print(movies[-2::-2])
    

    d.获取[‘猿人泰山’、‘阿甘正传’]

    print(movies[::-5])
    

    e.获取[‘霸王别姬’]

    print(movies[2:3])
    /
    a = []
    a.append(movies[2])
    print(a)
    /
    b = [movies[2]]
    print(b)
    

列表的遍历

循环(遍历):

movies = ['阿甘正传','肖申克的救赎','霸王别姬','三傻大闹宝莱坞','环太平洋','猿人泰山']
  1. 直接遍历

    for i in movies:
        print(i)
    
  2. 间接遍历

    len()查看容器的长度

    print(len(movies))
    for i in range(len(movies)):
        print(movies[i])
    
  3. enumerate():将列表转换为一个可迭代对象(for循环)

    print(enumerate(movies)) 
    #<enumerate object at 0x000001EF0B136E10>
    
    for i in enumerate(movies):
        print(i)
    # (0, '阿甘正传')
    # (1, '肖申克的救赎')
    # (2, '霸王别姬')
    # (3, '三傻大闹宝莱坞')
    # (4, '环太平洋')
    # (5, '猿人泰山')  
    

    练习:将下方列表中的元素从小到大排序(冒泡排序)

    排序:list1 = [23,56,10,55,76,100,30]

    [23,10,55,56,76,30,100]
    [10,23,55,56,30,76,100]
    [10,23,55,30,56,76,100]
    [10,23,30,55,56,76,100]

    #外层循环控制趟数
    for i in range(1,len(list1)):
        print(f'这是第{i}趟排序')
        print('每趟排序开始前:',list1)
        for j in range(len(list1)-i):
            print('每次排序的两个元素:',list1[j],list1[j+1])
            if list1[j] > list1[j+1]:
                list1[j],list1[j+1] = list1[j+1],list1[j]
            #打印每一趟排序的结果
            print(list1)
            
      # 这是第1趟排序
        # 每趟排序开始前: [23, 56, 10, 55, 76, 100, 30]
        # 每次排序的两个元素: 23 56
        # [23, 56, 10, 55, 76, 100, 30]
        # 每次排序的两个元素: 56 10
        # [23, 10, 56, 55, 76, 100, 30]
        # 每次排序的两个元素: 56 55
        # [23, 10, 55, 56, 76, 100, 30]
        # 每次排序的两个元素: 56 76
        # [23, 10, 55, 56, 76, 100, 30]
        # 每次排序的两个元素: 76 100
        # [23, 10, 55, 56, 76, 100, 30]
        # 每次排序的两个元素: 100 30
        # [23, 10, 55, 56, 76, 30, 100]
        # 这是第2趟排序
        # 每趟排序开始前: [23, 10, 55, 56, 76, 30, 100]
        # 每次排序的两个元素: 23 10
        # [10, 23, 55, 56, 76, 30, 100]
        # 每次排序的两个元素: 23 55
        # [10, 23, 55, 56, 76, 30, 100]
        # 每次排序的两个元素: 55 56
        # [10, 23, 55, 56, 76, 30, 100]
        # 每次排序的两个元素: 56 76
        # [10, 23, 55, 56, 76, 30, 100]
        # 每次排序的两个元素: 76 30
        # [10, 23, 55, 56, 30, 76, 100]
        # 这是第3趟排序
        # 每趟排序开始前: [10, 23, 55, 56, 30, 76, 100]
        # 每次排序的两个元素: 10 23
        # [10, 23, 55, 56, 30, 76, 100]
        # 每次排序的两个元素: 23 55
        # [10, 23, 55, 56, 30, 76, 100]
        # 每次排序的两个元素: 55 56
        # [10, 23, 55, 56, 30, 76, 100]
        # 每次排序的两个元素: 56 30
        # [10, 23, 55, 30, 56, 76, 100]
        # 这是第4趟排序
        # 每趟排序开始前: [10, 23, 55, 30, 56, 76, 100]
        # 每次排序的两个元素: 10 23
        # [10, 23, 55, 30, 56, 76, 100]
        # 每次排序的两个元素: 23 55
        # [10, 23, 55, 30, 56, 76, 100]
        # 每次排序的两个元素: 55 30
        # [10, 23, 30, 55, 56, 76, 100]
        # 这是第5趟排序
        # 每趟排序开始前: [10, 23, 30, 55, 56, 76, 100]
        # 每次排序的两个元素: 10 23
        # [10, 23, 30, 55, 56, 76, 100]
        # 每次排序的两个元素: 23 30
        # [10, 23, 30, 55, 56, 76, 100]
        # 这是第6趟排序
        # 每趟排序开始前: [10, 23, 30, 55, 56, 76, 100]
        # 每次排序的两个元素: 10 23
        # [10, 23, 30, 55, 56, 76, 100]
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值