• XX学Python·列表


    # 列表定义格式:变量名 = [数据1,数据2,...]或a = list()用list方法
    # 如果列表中只有一个元素,必须加逗号:变量名 = [数据,]
    name_list = ['Rose', 'Jack', 'Tom']
    print(name_list)  # ['Rose', 'Jack', 'Tom']
    print(type(name_list))  # <class 'list'>
    
    # 在Python中,列表可以储存不同数据类型的数据
    # 但在开发中,为了处理方便,一个列表一般储存同种数据类型
    list1 = ['name', 12, False, [1,2,3]]
    print(list1)  # ['name', 12, False, [1, 2, 3]]
    

    列表的查询

    index,count,in,not in

    name_list = ['Rose', 'Jack', 'Tom', 'Jack']
    # 索引查询,和字符串完全一致
    print(name_list[0])  # Rose
    print(name_list[1])  # Jack
    print(name_list[-2])  # Tom
    # 利用索引进行切片
    print(name_list[::-1])  # ['Jack', 'Tom', 'Jack', 'Rose']
    print(name_list[1:3:1])  # ['Jack', 'Tom']
    print(name_list)    # ['Rose', 'Jack', 'Tom', 'Jack'],对原列表无修改
    
    # index从左至右查询指定元素的索引,返回第一次出现的正向索引,没有查询到报错
    print(name_list.index('Jack'))  # 1
    
    # count 计数,查询指定元素在列表中出现的次数
    print(name_list.count('Jack'))  # 2次
    
    # in 判断元素是否在列表里,在返回True,不在返回False
    print('Jack' in name_list)  # True
    # not in 判断元素是否不在列表里,不在返回True,在返回False
    print('Jack' not in name_list)  # False
    

    列表的增加

    append,extend,insert。不会产生新的列表,都是在原有列表进行增加。

    # append追加到列表末尾
    num_list = [1, 2, 3, 4]
    print(num_list.append(5))  # None,直接打印append方法的调用不会输出任何内容
    # 因为list在使用append方法时不会产生新的列表,而是在原有列表上进行修改
    print(num_list)  # [1, 2, 3, 4, 5]
    
    # extend追加数据序列
    # 格式:列表.extend(数据序列),括号里必须是可迭代对象
    list1 = [1,2,3]
    list2 = [4,5,6]
    list1.extend(list2)
    print(list1)  # [1, 2, 3, 4, 5, 6]
    print(list2)  # [4, 5, 6]
    # 追加字符串序列时,会将字母依次拆分放入列表中
    str1 = 'love'
    list2.extend(str1)
    print(list2)  # [4, 5, 6, 'l', 'o', 'v', 'e']
    # 括号内必须是可迭代对象
    # list2.extend(7)  # TypeError: 'int' object is not iterable
    list2.extend('7')
    print(list2) # [4, 5, 6, 'l', 'o', 'v', 'e', '7']
    list2.extend(['ai','ni'])
    print(list2)  # [4, 5, 6, 'l', 'o', 'v', 'e', '7', 'ai', 'ni']
    
    # insert指定索引插入,格式:列表.insert(插入位置索引,要插入的数据)
    num_list1 = [100, 300, 400]
    num_list1.insert(1,200)
    print(num_list1)  # [100, 200, 300, 400]
    # 在开发中除非明确所有索引引用都修改完成,否则不用使用insert。
    
    # append和extend对比
    list3 = [11,12,13]
    list4 = [14,15,16]
    # append将list4当作一个元素追加到列表末尾
    list3.append(list4)  # [11, 12, 13, [14, 15, 16]]
    # extend的将list4当作多个元素进行拆分追加
    list3.extend(list4)  # [11, 12, 13, 14, 15, 16]
    
    # 添加5
    c_list = [1, 2, 3]
    c_list += [5]
    c_list.extend([5])
    print(c_list)
    

    列表中的删除

    del list[下标],list.pop(下标),list.remove(删除内容),list.clear()

    # del 将数据引用切断,格式:del 要删除内容
    list1 = [1,2,3,4]
    # del list1
    # print(list1)  # NameError: name 'list1' is not defined
    # del不仅可以删除元素,也可删除任何变量,非常强大,但有些不安全
    del list1[2]  # 通过索引获取要删除的元素并删除,索引超出范围会报错
    print(list1)  # [1, 2, 4]
    # 如果是循环中能删除吗?
    # 没删除,因为i是临时变量,这里是将i和2的引用关系删除,但list1和2的引用关系没删除
    for i in list1:
        if i == 2:
            del i
    print(list1)  # 还是[1, 2, 4],没有删除
    
    # pop 删除指定索引元素,并返回该元素。
    # 格式:列表.pop(要删除元素的索引),索引超出范围会报错
    list2 = [11,12,13,14]
    print(list2.pop(2))  # 删除后可返回被删除的对象为13
    print(list2)  # [11, 12, 14]
    print(list2.pop())  # 若不传值,默认删除最后一个元素为14
    print(list2)  # [11, 12]
    
    # remove 删除指定元素(从左至右第一次出现的元素)
    # 格式:列表.remove(删除元素),没有会报错。
    list3 = [3,4,5,6,7,8,5,5]
    list3.remove(5)
    print(list3)  # [3, 4, 6, 7, 8, 5, 5]
    
    # clear 清空列表
    # 将列表置为[],但与list3=[]有本质区别。后者是给了新的空间,以前的还在。
    list3.clear()
    print(list3)  # []
    

    列表的修改

    list[索引] = 修改后的值,list.reverse(),list.sort(key=排序规则函数,reverse=真或假)

    # 通过索引进行修改格式:list[索引] = 修改后的值
    list1 = [1,2,3,4]
    list1[1] = 6  # 索引要存在,不然报错
    print(list1)  # [1, 6, 3, 4]
    list1[2], list1[3] = 7, 8  # 可使用对多个变量赋值的形式修改多个值
    print(list1)  # [1, 6, 7, 8]
    
    # reverse 列表的反转。格式:列表.reverse()
    list2 = [1,2,3,4]
    list2.reverse()  # print的话返回值是None
    print(list2)  # [4, 3, 2, 1]原列表改变了
    
    # sort 排序。格式:列表.sort(key=排序规则函数,reverse=真或假)
    list3 = [2,6,43,2,41,421]
    list3.sort()  # 默认排序为升序
    print(list3)  # [2, 2, 6, 41, 43, 421]
    # 降序方法一:先排序,再反转
    list3 = [2,6,43,2,41,421]
    list3.sort()
    list3.reverse()
    print(list3)
    # 降序方法二:直接使用倒叙排列
    list3 = [2,6,43,2,41,421]
    list3.sort(reverse=True)
    print(list3)
    # 需求:根据list3中每个元素%7的余数大小进行排序(了解,后续还会讲)
    list3 = [2,6,43,2,41,421]
    list3.sort(key=lambda x: x % 7)
    print(list3)
    

    列表的遍历

    # while遍历列表
    # len()函数可以查询列表的长度
    
    list1 = [12, 123, 1, 1, 1234, 12, 34, 8]
    # print(len(list1))
    i = 0
    while i < len(list1):
        print(list1[i])
        i += 1
    
    # for 遍历列表
    # 推荐使用for循环遍历容器类型(数据序列)
    for i in list1:
        print(i)
    
    # 输出索引和对应元素
    list = ['html', 'js', 'css', 'python']
    for a, b in enumerate(list):
        print ("%s :%s" % (a, b))
    # 结果为0 :html  1 :js  2 :css  3 :python
    

    列表的嵌套

    • 列表中嵌套其他的子列表
    name_list = [['小明', '小红', '小绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四', '王五']]
    # 需求:获取值李四
    print(name_list[2])  # 获取李四所在子列表
    print(name_list[2][1])  # 再从子列表获取李四
    
    # 需求:获取嵌套列表中的每一个值
    for i in name_list:  # 这样获得的是一级列表中的元素,即子列表
        print(i)
    
    for sub_list in name_list:  # 要获得嵌套后列表的元素,需要循环嵌套
        for name in sub_list:
            print(name)
    
  • 相关阅读:
    oj1089-1096总结(输入输出练习)
    oj 1002题 (大数题)
    第五次博客园作业+
    第五次博客园作业-
    博客园第四次作业
    博客园第四次作业
    C语言第三次作业
    c语言第三次作业
    设计模式第一次作业
    项目选题报告(团队)
  • 原文地址:https://www.cnblogs.com/portb/p/16754716.html
Copyright © 2020-2023  润新知