zoukankan      html  css  js  c++  java
  • 27.列表的常见操作

    列表的相关操作

    列表中存放的数据是可以进行修改的,比如"增"、"删"、"改"、"查"

    <1>添加元素("增"append, extend, insert)

    append

    通过append可以向列表添加元素

    demo:

    #定义变量A,默认有3个元素
    A = ['xiaoWang','xiaoZhang','xiaoHua']
    
    print("-----添加之前,列表A的数据-----")
    for tempName in A:
        print(tempName)
    #提示、并添加元素
    temp = input('请输入要添加的学生姓名:')
    A.append(temp)
    print("-----添加之后,列表A的数据-----")
    for tempName in A:
        print(tempName)

    结果:

    extend

    通过extend可以将另一个集合中的元素逐一添加到列表中

    >>> a = [1, 2]
    >>> b = [3, 4]
    >>> a.append(b)
    >>> a
    [1, 2, [3, 4]]
    >>> a.extend(b)
    >>> a
    [1, 2, [3, 4], 3, 4]

    insert

    insert(index, object) 在指定位置index前插入元素object

    >>> a = [0, 1, 2]
    >>> a.insert(1, 3)
    >>> a
    [0, 3, 1, 2]

    例子1:

    # o -> object -> 对象 (万物皆对象)
    # 列表是一个可变的数据类型
    # 如果在操作增 删 改 操作的时候是直接改变其本身
    #
    # 添加元素(append, extend, insert)
    
    # append (追加元素)
    # 定义一个列表
    my_list = [3, 2]
    # # 追加元素
    my_list.append(1)
    print(my_list)

    结果:

    [3, 2, 1]

    例子2:

    # extend
    # 只能添加的是可迭代对象
    # 会把可迭代对象的进行最小单元拆分 逐一的保存到列表中
    # 定义一个列表
    my_list = [3, 2]
    my_list.extend([4, 5, 6])
    print(my_list)

    结果:

    [3, 2, 4, 5, 6]

    例子3(假如没有extend):

    my_list = [3, 2, 1]
    # 假如没有了extend
    for value in [4, 5, 6]:
        my_list.append(value)
    print(my_list)

    运行结果:

    [3, 2, 1, 4, 5, 6]

    例子4:

    # insert
    # 定义一个列表
    my_list = [3, 2, 1]
    # 插入数据
    my_list.insert(-5, "双击666")
    print(my_list)

    运行结果:

    ['双击666', 3, 2, 1]

    重要点:

    append
    extend
    insert
    # 作为一个整体保存的
    append
    insert
    # 只能保存可迭代对象
    extend
    # 保存的数据在其列表的尾部
    append
    extend
    # 保存的数据在其列表任意位置
    insert

    练习

    demo1

    # 从键盘中输入5个学生的名字,存储到列表中,然后打印出每个学生名字中的第2个字符
    
    # # 定义一个列表
    student_list = list()
    #
    # # 如果for循环中的临时变量名不用 可以使用_进行占位
    for _ in range(5):
        name = input("请输入一个学生的名字:")
    #     # 保存到列表
        student_list.append(name)
    #
    # # 进行循环遍历
    for name in student_list:
    #     # 获取名字的第二个字符
        value = name[1]
        print("每个名字的第二个字符是:%s" % value)

    运行结果:

    请输入一个学生的名字:小张
    请输入一个学生的名字:小王
    请输入一个学生的名字:小李
    请输入一个学生的名字:小康
    请输入一个学生的名字:小朱
    每个名字的第二个字符是:张
    每个名字的第二个字符是:王
    每个名字的第二个字符是:李
    每个名字的第二个字符是:康
    每个名字的第二个字符是:朱

    demo2

    import random
    # 从键盘获取5个学生的名字,然后随机抽出一名学生去打扫卫生
    # 定义一个列表
    student_list = list()
    
    # 如果for循环中的临时变量名不用 可以使用_进行占位
    for _ in range(5):
        name = input("请输入一个学生的名字:")
        # 保存到列表
        student_list.append(name)
    
    # 定义一个变量 保存随机的下标索引
    index = random.randint(0, len(student_list) - 1)
    print("请%s学生打扫卫生,天意!!!" % student_list[index])

    运行结果:

    请输入一个学生的名字:小张
    请输入一个学生的名字:小李
    请输入一个学生的名字:小王
    请输入一个学生的名字:小康
    请输入一个学生的名字:小朱
    请小张学生打扫卫生,天意!!!

    <2>修改元素("改")

    修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改

    demo:

    #定义变量A,默认有3个元素
    A = ['xiaoWang','xiaoZhang','xiaoHua']
    
    print("-----修改之前,列表A的数据-----")
    for tempName in A:
        print(tempName)
    #修改元素
    A[1] = 'xiaoLu'
    
    print("-----修改之后,列表A的数据-----")
    for tempName in A:
        print(tempName)

    结果:

        -----修改之前,列表A的数据-----
        xiaoWang
        xiaoZhang
        xiaoHua
        -----修改之后,列表A的数据-----
        xiaoWang
        xiaoLu
        xiaoHua

    <3>查找元素("查"in, not in, index, count)

    所谓的查找,就是看看指定的元素是否存在

    in, not in

    python中查找的常用方法为:

    • in(存在),如果存在那么结果为true,否则为false
    • not in(不存在),如果不存在那么结果为true,否则false

    demo

        #待查找的列表
        nameList = ['xiaoWang','xiaoZhang','xiaoHua']
    
        #获取用户要查找的名字
        findName = input('请输入要查找的姓名:')
    
        #查找是否存在
        if findName in nameList:
            print('在字典中找到了相同的名字')
        else:
            print('没有找到')

    说明:

    in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在

    index, count

    index和count与字符串中的用法相同

    >>> a = ['a', 'b', 'c', 'a', 'b']
    >>> a.index('a', 1, 3) # 注意是左闭右开区间
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 'a' is not in list
    >>> a.index('a', 1, 4)
    3
    >>> a.count('b')
    2
    >>> a.count('d')
    0

    例子1:

    # 修改和查找元素(in, not in, index, count)
    
    # 修改
    # # 定义一个列表
    my_list = ["hello", 123, 3.14]
    
    # 取值
    # value = my_list[1]
    
    # 修改123为12300
    my_list[0] = "python"
    print(my_list)

    运行结果:

    ['python', 123, 3.14]

    例子2:

    # 修改和查找元素(in, not in, index, count)
    # 查找元素(in, not in, index, count)
    # 定义一个列表
    my_list = ["hello", 123, 3.14, 1, True]
    # in 判断元素是否存在于列表中
    flag = 1231 in my_list
    print(flag)
    # # 和if语句配合使用
    if 123 in my_list:
        pass
    
    # not in
    if 234 not in my_list:
        print("234不存在列表中")

    例子3:

    # 修改和查找元素(in, not in, index, count)
    # 查找元素(in, not in, index, count)
    # 定义一个列表
    my_list = ["hello", 123, 3.14, 1, True]
    
    # index
    # 查看元素在列表的位置
    # 有返将位置
    # 没有将报错
    index = my_list.index("hello1")
    print(index)
    
    # count
    # 计算元素在列表中的出现次数
    count = my_list.count(True)
    print(count)

    <4>删除元素("删"del, pop, remove)

    类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。

    列表元素的常用删除方法有:

    • del:根据下标进行删除
    • pop:删除最后一个元素
    • remove:根据元素的值进行删除

    demo:(del)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        del movieName[2]
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        指环王
        霍比特人
        速度与激情

    demo:(pop)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        movieName.pop()
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人

    demo:(remove)

        movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    
        print('------删除之前------')
        for tempName in movieName:
            print(tempName)
    
        movieName.remove('指环王')
    
        print('------删除之后------')
        for tempName in movieName:
            print(tempName)

    结果:

        ------删除之前------
        加勒比海盗
        骇客帝国
        第一滴血
        指环王
        霍比特人
        速度与激情
        ------删除之后------
        加勒比海盗
        骇客帝国
        第一滴血
        霍比特人
        速度与激情

    例子1:

    # 删除元素(del, pop, remove)
    # del 不是方法是关键字删除
    # del 列表名[下标索引]
    # 定义一个列表
    my_list = ["hello", 3.14, 123]
    
    del my_list[1]
    print(my_list)

    运行结果:

    ['hello', 123]

    例子2:

    # 删除元素(del, pop, remove)
    # pop
    # 删除的元素数值 = 列表名.pop(下标索引)
    # 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素
    # 定义一个列表
    my_list = ["hello", 3.14, 123]
    my_list.pop(1)
    print(my_list)

    运行结果:

    ['hello', 123]

    例子3(不指定下标索引默认删除最后一个元素):

    # 删除元素(del, pop, remove)
    # pop
    # 删除的元素数值 = 列表名.pop(下标索引)
    # 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素
    # 定义一个列表
    my_list = ["hello", 3.14, 123]
    my_list.pop()
    print(my_list)

    运行结果:

    ['hello', 3.14]

    例子4:

    # 删除元素(del, pop, remove)
    # remove
    # 列表名.remove(元素)
    # 定义一个列表
    my_list = ["hello", 3.14, 123]
    my_list.remove("hello")
    print(my_list)

    运行结果:

    [3.14, 123]

    例子5:

    # 删除元素(del, pop, remove)
    
    # clear 清空
    # # 定义一个列表
    my_list = ["hello", 3.14, 123]
    my_list.clear()
    print(my_list)

    运行结果:

    []

    <5>排序(sort, reverse)

    sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

    reverse方法是将list逆置。

    >>> a = [1, 4, 2, 3]
    >>> a
    [1, 4, 2, 3]
    >>> a.reverse()
    >>> a
    [3, 2, 4, 1]
    >>> a.sort()
    >>> a
    [1, 2, 3, 4]
    >>> a.sort(reverse=True)
    >>> a
    [4, 3, 2, 1]

    例子1:

    import random
    # 列表保存6个元素 每个元素的数值范围在[1, 100]之间
    
    # 定义一个列表
    my_list = []
    # 循环6次
    for _ in range(3):
        # 准备一个随机数值
        value = random.randint(1, 100)
        # 保存到列表中
        my_list.append(value)
    
    print(my_list)

    运行结果:

    [12, 56, 94, 49, 65, 32]

    例子2:

    import random
    # 列表保存6个元素 每个元素的数值范围在[1, 100]之间
    
    # 定义一个列表
    my_list = []
    # 循环6次
    for _ in range(6):
        # 准备一个随机数值
        value = random.randint(1, 100)
        # 保存到列表中
        my_list.append(value)
    
    print(my_list)
    
    # sort 升序
    # 列表名.sort() == 列表名.sort(reverse=False)
    my_list.sort()
    print(my_list)
    
    
    my_list.reverse()
    print(my_list)

    运行结果:

    [77, 37, 20, 95, 23, 53]
    [20, 23, 37, 53, 77, 95]
    [95, 77, 53, 37, 23, 20]

    例子3:

    # 降序
    my_list = [77, 37, 20, 95, 23, 53]
    my_list.sort(reverse=True)
    print(my_list)

    运行结果:

    [95, 77, 53, 37, 23, 20]

    例子4:

    # 字符串 abc [::-1] cba 逆置 倒序
    # 列表逆置 倒序
    # 列表也支持切片技术
    my_list = [77, 37, 20, 95, 23, 53]
    ret1 = my_list[::-1]
    print(ret1)

    运行结果:

    [53, 23, 95, 20, 37, 77]

     例子5:

    # 倒序
    my_list = [86, 33, 87, 36, 83, 95]
    my_list.reverse()
    print(my_list)

    运行结果:

    [95, 83, 36, 87, 33, 86]
  • 相关阅读:
    POJ 3279 Fliptile 枚举+搜索
    POJ 3278 Catch That Cow
    CS Academy Round41 BFS+DFS
    CS Academy Round41 Tennis Tournament
    CS Academy Round41 Cinema Seats
    POJ 1177 Picture
    HDU 1255 覆盖的面积
    POJ 1151 Atlantis 线段树+离散化
    HDU 4614 Vases and Flowers 线段树+二分
    凑数问题
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12758088.html
Copyright © 2011-2022 走看看