美文网首页
day6总结

day6总结

作者: xue_y | 来源:发表于2018-12-29 22:37 被阅读0次

    列表(list)

    列表是python提供的容器型数据类型。可变并且有序的
    可变 - 列表中的每个元素的值可变,列表的长度可变,列表中元素的顺序可变 (支持增删改)
    有序 - 每个元素可以通过下标来确定位置
    2.列表的字面量: 通过[]括起来,里面有多个元素,每个元素用逗号隔开;
    [1, 2, 3]
    [10, 'abc', True]
    num = 100; [num, 200]
    [] -- 空列表
    注意:列表元素的类型可以是任何python支持的数据类型;并且同一列表中不同元素的类型可以不一样

    scores = [90, 89, 100, 67]
    print(scores)
    
    # 任何类型的数据都可以作为列表的元素
    list1 = [90, 10.34, 'abc', True, [1, 2, 3], {'a': 10}, lambda x: 2*x]
    print(len(list1))
    # 列表中元素过长时可以单独一行一个
    list2 = [
        90,
        10.34,
        'hello',
        {'name': 'xiaoming'}
    ]
    

    获取单个元素

    列表[下标] - 获取列表中指定下标对应的元素

    list1 = [10, 20, 30, 'abc']
    print(list1[0], list1[-1])
    

    获取部分元素(切片) - 结果是列表

    列表[开始下标:结束下标:步长]
    注意:取不到的时候,结果是空列表

    moves = ['毒液', '功夫熊猫', '肖生克的救赎', '这个杀手不太冷', '拯救大兵瑞恩']
    print(moves[1:3])       # ['功夫熊猫', '肖生克的救赎']
    print(moves[1:5:2])     # ['功夫熊猫', '这个杀手不太冷']
    print(moves[3:-3:-1])   # ['这个杀手不太冷']
    print(moves[3:-3:1])    # []
    print(moves[:2])        # ['毒液', '功夫熊猫']
    print(moves[2::-1])     # ['肖生克的救赎', '功夫熊猫', '毒液']
    print(moves[::-1])      # 列表中的元素倒序
    

    一个一个的取出所有元素(遍历)

    c.一个一个的取出所有元素(遍历)
    可以使用for循环直接遍历列表拿到每个元素; (操作元素的时候和下标无关)
    可以通过遍历列表元素对应的下标来遍历列表元素; (操作元素的时候和下标有关) 
    

    直接遍历

    for item in moves:
    print(item)

    通过遍历下标遍历

    for index in range(len(moves)):
    print('下标:',index)
    print(moves[index])

    #列表增删改
    ##1.增(添加列表元素)
    a.append
    列表.append(元素)  -  在指定的列表的最后添加指定的元素(注意:这个操作不会产生新的列表)
    ```animes.append('一拳超人')
    print(animes)
    

    b.insert
    列表.insert(下标, 元素) - 在指定的下标前插入指定的元素(注意:这个操作不会产生新的列表)

    animes.insert(2, '犬夜叉')
    print(animes)
    
    animes.insert(0, '进击的巨人')
    print(animes)
    

    2.删(删除元素)

    a.del
    del 列表[下标] - 删除列表中指定下标对应的元素

    del animes[-2]
    print(animes)
    

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

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

    animes.remove('海贼王')
    print(animes)
    

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

    c.pop
    列表.pop() - 将列表中最后一个元素从列表中取出, 会返回取出来的元素
    列表.pop(下标) - 将列表中指定下标对应的元素从列表中取出, 会返回取出来的元素

    del_item = animes.pop()
    print(animes, del_item)
    
    del_item = animes.pop(0)
    print(animes, del_item)
    

    注意:pop是将列表中的元素取出,可在使用

    删除过程中的bug

    ages = [12, 13, 20, 18, 30]
    temp = ages[:]
    for age in temp:
        if age < 18:
            ages.remove(age)
    print(ages)
    # 简写
    ages = [12, 13, 20, 18, 30]
    for age in ages[:]:
        if age < 18:
            ages.remove(age)
    print(ages)
    

    过程:由于删除元素后,元素下标会发生改变,比如删除下标为0的元素后,第二个元素下标变为0,使用循环遍历的时候就会漏掉,所以这里建立一个与原列表元素相同的列表(采用原列表的切片)循环。
    ages = [30,12, 13, 20, 18, 30, 10]
    index = range(6) = 0 ~ 5
    index = 0 age = 12 ages = [13, 20, 18, 30, 10]
    index = 1 age = 20 ages = [13, 20, 18, 30, 10]
    index = 2 age = 18
    index = 3 age = 30
    index = 4 age = 10 ages = [13, 20, 18, 30]
    index = 5 越界!
    错误2
    通过下标遍历列表,删除元素的时候,下标越界和元素获取不全
    -- 解决办法:下标对应的元素需要删除,下标值不动;不会删除下标加1

    ages = [12, 13, 20, 18, 30, 10]
    new_ages = []   # 保存被删除的元素
    index = 0
    while index < len(ages):
        age = ages[index]
        if age < 18:
            del_item = ages.pop(index)
            new_ages.append(del_item)
        else:
            index += 1    # 不需要删除的时候下标才增加
    
    print(ages, new_ages)
    

    3.改(修改元素的值)

    列表[下标] = 新值 -- 修改列表中指定下标对应的值

    scores = [90, 78, 50, 77, 23, 82, 45]
    count = 0
    for index in range(len(scores)):
        if scores[index] < 60:
            scores[index] = '下一个班见'
            count += 1
    print(scores, count)
    

    列表的运算

    相关运算:

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

    list1 = [1, 2, 3]
    list2 = ['a', 'b', 'c']
    print(list1 + list2, list1)
    print(list1*2)
    

    b.支持比较运算
    比较大小的原理和字符串类似

    print([1, 2, 3] == [2, 1, 3])   # False
    print([1, 2, 3] == [1, 2, 3])   # True
    
    # 了解!
    print([1, 2, 3, 4] > [2, 3])    # False
    print([10, 20, 2] > [10, 3])    # True
    

    2. in / not in

    元素 in 列表 - 判断列表中是否存在指定的元素

    print([1, 2] in [1, 2, 3])   # False
    print([1, 2] in [[1, 2], 30, 'abc'])   # True
    print('abc' in [10, 'abc', True])   # True
    

    3. len

    len(列表) - 获取列表中元素的个数

    print(len([[1, 'a'], 2, '100', True]))
    

    4.list

    list(数据) - 将其他数据转换成列表;只有序列才可以转换成列表,并且所有的序列都能转化成列表;
    转换的时候就是将序列中所有的元素转换成列表的元素
    注意:不能python给我们提供的类型的名字来命名,否则会有隐患

    list1 = list('hello')
    print(list1)
    
    list2 = list(range(11, 21))
    print(list2)
    

    5.序列其他方法

    max(序列) - 获取序列中值最大的元素
    min(序列) - 获取序列中值最小的元素
    sum(序列) - 求序列中所有元素的和
    注意:以上三个方法,要求序列中的元素类型必须一致, 并且这个类型支持比较运算和加法运算(一般数字序列用)

    print(max([19, 89, 999, 2, 0.2]))
    print(min([19, 89, 999, 2, 0.2]))
    print(sum([19, 89, 999, 2, 0.2]))
    print(sum(range(101)))
    

    6.其他函数

    count()统计某个元素在列表中出现的次数

    list1 = [1, 2, 3, 1, 100, 20, 30, 1]
    print(list1.count(1))
    

    extend()在列表末尾一次性追加另一个序列中多个值(用新列表扩展原来列表)

    list1.extend(['abc', 100])
    print(list1)
    

    index()从列表中找出摸个值第一个匹配项的索引

    list1 = [1, 2, 100, 3, 1, 100, 20, 30, 1]
    print(list1.index(100))
    

    reverse()反向列表中元素

    list1.reverse()
    print(list1)
    

    list.sort(cmp=None,key=None,reverse=False)对原列表进行排序

    list1 = [1, 2, 100, 3, 1, 100, 20, 30, 1]
    list1.sort()
    print(list1)
    # 倒序
    list1 = [1, 2, 100, 3, 1, 100, 20, 30, 1]
    list1.sort(reverse=True)
    print(list1)
    

    clear()清空列表

    list1.clear()
    print(list1)
    

    copy()复制列表

    list1 = [1, 2, 100, 3, 1, 100, 20, 30, 1]
    list2 = list1.copy()
    list3 = list1[:]
    print(list2, list3)
    print(id(list1), id(list2), id(list3))
    

    相关文章

      网友评论

          本文标题:day6总结

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