美文网首页
day06 列表

day06 列表

作者: 挽风style | 来源:发表于2019-01-02 09:24 被阅读0次

    列表

    1. 什么是列表(list)
    • 列表是python提供的容器型数据类型。可变并且有序的
    • 可变 - 列表中的每个元素的值可变,列表的长度可变,列表中元素的顺序可变
    • 有序 - 每个元素可以通过下标来确定位置
    1. 列表的字面量:通过[]括起来,里面有多个元素,每个元素用逗号隔开
    • [] -- 空列表

    注意:列表元素的类型可以是任何python支持的数据类型;并且通过列表不同元素类型可以不一样

    scores = [90, 89, 100, 45, 56]
    print(scores)
    
    # 任何类型的数据都可以作为列表的元素
    list1 = [90, 10, 'abc', True, [1, 2, 3], lambda x:x**2]
    print(len(list1))
    
    list2 = [
        90,
        10.34,
        'hello',
        {'name': 'jim'}
    ]
    print(list2)
    
    1. 获取列表元素(和字符串获取字符的语法一样)
    • a. 获取单个元素
      列表[下标] - 获取列表中指定下标对应的元素
    list3 = [10, 20, 30]
    print(list3[1])
    
    
    • b.获取部分元素(切片)
      列表[开始下标:结束下标:步长]
    movies = ['大黄蜂', '钢铁侠', '蚁人', '雷神', '蜘蛛侠']
    print(movies[1:3])
    print(movies[1:5:2])
    print(movies[3:-4:-1])
    
    • c.一个一个的取出所有元素(遍历)
      可以使用for循环直接遍历列表拿到每个元素;(操作元素的时候和下标无关)
      可以通过遍历列表元素对应的下标来遍历列表元素;(操作元素的时候和下标有关)
    直接遍历
    for item in movies:
        print(item)
    
    # 通过遍历下标遍历
    for index in range(len(movies)):
        print('下标:', index)
        print(movies[index])
    
    
    
    animes = ['海贼王', '火影忍者', '一人之下', '秦时明月', '一拳超人', '海贼王']
    

    列表的增删改

    1. 增(添加列表元素)
    • a.append
      列表.append(元素) - 在指定的列表的最后添加指定的元素
    • b.insert
      列表.insert(下标, 元素) - 指定的下标前插入指定的元素
    animes.append('一拳超人')
    print(animes)
    animes.insert(2, '犬夜叉')
    print(animes)
    
    
    1. 删(删除元素)
    • a.del
      del 列表[下标] - 删除列表中指定下标对应的元素

    注意: del是python中的关键字,可以用它删除任何数据
    删除的时候下标不能越界

    • b.remove()
      列表.remove(元素) - 删除列表中第一个指定元素

    注意:被删除的元素在列表中 必须是存在的

    • c.pop
      列表.pop() - 将列表中最后一个元素从列表中取出,会返回取出来的元素
      列表.pop(下标) - 将列表中指定下标对应的元素从列表中取出,会返回去出来的元素
    # del
    del animes[-1]
    print(animes)
    
    # remove
    animes.remove('海贼王')
    print(animes)
    
    # pop
    del_item = animes.pop()
    print(animes, del_item)
    
    del_item = animes.pop(0)
    print(animes, del_item)
    

    练习:用一个列表统计一个班的学生年龄(控制台不断输入年龄的值,直到输入end为止),删除所有小于18岁的年龄

    index = 0
    age = input('请输入年龄:')
    ages = []
    ages.append(age)
    if age != 'end':
        ages.append(int(age))
        age = input('请输入年龄:')
    
    while index < len(ages):
        if age < 18:
            del ages[index]
        else:
            index += 1
    
    print(ages)
    """
    # 坑一: 遍历列表删除部分,删不全!  --遍历时对原列表进行切片
    ages = [12, 34, 45, 67, 3, 8]
    for age in ages[:]:
        if age < 18:
            ages.remove(age)
    
    print(ages)
    
    
    # 将小于18岁的取出来,存到一个新的列表中
    ages = [12, 13, 20, 18, 30, 10]
    new_age = []
    index = 0
    while index < len(ages):
        age = ages[index]
        if age < 18:
            del ages[index]
        else:
            index += 1
    
    print(ages, new_age)
    
    1. 改(修改元素的值)
    • 列表[下标] = 新值 --修改列表中指定下标对应的值
    
    list1 = [1, 2, 3]
    list1[0] = 'abc'
    print(list1)
    

    练习:有一个列表中保存的是学生的成绩,要求将列表中成绩小于60的改成'下一个班见',并且统计下一个班见的学生个数

    list1 = [45, 67, 90, 89, 56, 77]
    count = 0
    for index in range(len(list1)):
        if list1[index] < 60:
            list1[index] = '下一个班见'
            count += 1
    print(list1, count)
    

    listOperation

    1. 相关运算:
    • a.数学运算+, *
      列表1 + 列表2 -将两个列表合并在一起,产生一个新的列表
      列表*N - 列表中的元素重复N次,产生一个新的列表

    • b.支持比较运算

    list1 = [1, 2, 3]
    list2 = ['a', 'b', 'c']
    print(list1 + list2)
    print(list1 * 2)
    
    
    print([1, 2, 3] == [2, 1, 3])  # False
    print([1, 2, 3] == [1, 2, 3])  # True
    
    print([1, 2, 3, 4] > [1, 2, 3])   # True
    
    
    
    1. in / not in
    • 元素 in 列表 - 判断列表中是否存在指定的元素
    print([1, 2] in [1, 2, 3])  # False
    print([1, 2] in [[1, 2], 2, 3])  # True
    print('abc' in [10, 'abc', True])   # True
    
    
    1. len
    • len(列表) - 获取列表中元素的个数
    print(len([1, [1, 2], 2, 'abc', True]))
    
    1. list
    • list(数据) - 将其他数据转换成列表;只有的列才可以转换成列表
      转换的时候就是将序列中所有的元素转换成列表的元素
    # list = 10     # 注意:不能python给我们提供的类型的名字来命名
    
    list1 = list('hello')
    print(list1)
    
    list2 = list(range(11, 21))
    print(list2)
    
    1. 序列其他方法
    • max(序列) - 获取序列中值最大的元素
    • min(序列) - 获取序列中值最大的元素
    • sum(序列) - 求序列中所有元素的和

    注意:以上三个方法,要求序列中的元素类型必须一致,并且类型支持比较运算或者加法运算

    
    print(max([13, 14, 56, 12, 34]))
    print(min([13, 14, 56, 12, 34]))
    print(sum([13, 14, 56, 12, 34]))
    print(sum(range(101)))
    

    相关文章

      网友评论

          本文标题:day06 列表

          本文链接:https://www.haomeiwen.com/subject/dsmalqtx.html