• python全栈_009_Python3基本数据类型--列表


    1:列表的介绍

      列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如C++中的数组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开,而且可以存放各种数据类型,列表是可变数据类型(即可以改变列表内存中的值)

    lst = [1, 2, 3, 4]
    print(lst, id(lst))
    lst = [1, 2, 3, 4] # 重新创建一个列表
    print(lst, id(lst))
    lst[0] = 'Hello'    #修改第一个元素的值,修改之后内存地址是不会变的
    print(lst, id(lst))
    lst.append('2343423333dfsdfsdfsdfsd')  # 增加一个元素,列表内存地址也是不会变的
    print(lst, id(lst))
    
    # 列表中的元素可以是各种数据类型,可以是列表,字符串,数字,字典等等
    lst = [False, 'Haha', 1, "吼吼", [1, ['23',89], 8,0,"百度"], ("","", "", ""), "abc", {"我叫":"dict字典"},{"我叫集合","集合"}]
    print(lst)

      列表相比于字符串. 不仅可以存放不同的数据类型。而且可以存放大量的数据。32位python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.而且列表是有序的(按照你保存的顺序),有索引, 可以切片方便取值。

    2:列表的索引与切片

    2.1:列表和字符串一样也拥有索引:

    # 列表也有索引,索引从0开始
    lst = ['迈克尔·杰克逊', '苏有朋', '梁咏琪', '林志颖', '张学友', '刘德华', '中华人民共和国']
    print(lst[3])         # 林志颖
    print(lst[-1])        # 中华人民共和国
    print(lst[-1][2:4])   # 人民
    
    lst[2] = 'helloWorld'
    print(lst)  # ['迈克尔·杰克逊', '苏有朋', 'helloWorld', '林志颖', '张学友', '刘德华', '中华人民共和国']
    
    s = '苏有朋'
    print(s)
    s[0] = ''  # 报错: TypeError: 'str' object does not support item assignment
    print(s)

    2.2:列表的切片:

    # 切片,切片出来的是列表(什么类型切片出来的还是原来的类型)
    lst = ['迈克尔·杰克逊', '苏有朋', '梁咏琪', '林志颖', '张学友', '刘德华', '中华人民共和国']
    print(lst[1:3])       # ['苏有朋', '梁咏琪']
    print(lst[1:5:2])     # 取 第1, 3 位的;输出 ['苏有朋', '林志颖']
    print(lst[-1:-4:-2])  # 取 第-1, -3 位的;输出 ['中华人民共和国', '张学友']
    print(lst[2::-1])     # ['梁咏琪', '苏有朋', '迈克尔·杰克逊']
    
    # 索引 与 切片 参考字符串的

    3:列表的增删改查:

    3.1:列表的增加操作:

    : 注意, list和str是不一样的,lst可以发生改变,所以直接就在原来的对象上进行了操作:
    #  新增
    # 1:append,每次都在末尾添加元素
    lst = []
    lst.append('林志颖')
    lst.append('张学友')
    lst.append('刘德华')
    lst.append('张柏芝')
    print(lst)  # ['林志颖', '张学友', '刘德华', '张柏芝']
    
    
    # 2:insert
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    lst.insert(2, '周杰伦')  # 在2号位置插入,即在'刘德华'位置插入,'刘德华'及后面的数据向后移动;插入的时候,可能会导致元素移动
    print(lst)  # ['林志颖', '张学友', '周杰伦', '刘德华', '张柏芝']
    
    # 3:迭代添加:extend
    lst = ['刘德华', '张柏芝']
    lst.extend('林志颖')  # 字符串为可迭代对象,会把字符串中的每个字符添加到列表中,输出: ['刘德华', '张柏芝', '林', '志', '颖']
    print(lst)
    lst.extend(['张学友']) # 迭代列表, ['刘德华', '张柏芝', '林', '志', '颖', '张学友']
    print(lst)

    3.2:列表的删除操作:

    #删除: pop,remove,clear,del
    # 1:pop : 按照索引来删除,默认删除最后一个
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    s = lst.pop()  # 默认弹出最后一个,可以指定元素(索引)删除;返回删除的元素
    print(s)    # 张柏芝
    print(lst)  # ['林志颖', '张学友', '刘德华']
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    s2 = lst.pop(1)   # 输出1号为元素('张学友'),   输出:['林志颖', '刘德华', '张柏芝']
    print(lst)
    
    # 2: remove,按照元素值来删除,删除时元素值要存在于列表中,不然会报错
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    lst.remove('林志颖') # 指定元素(元素值)  输出 : ['张学友', '刘德华', '张柏芝']
    print(lst)
    lst.remove('费玉清')  # 报错 ValueError: list.remove(x): x not in list
    print(lst)
    
    # 3:clear,全部清空元素
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    print(lst,id(lst))
    lst.clear() # 元素全部清空,[]
    print(lst,id(lst))
    
    # 4:del 输出,指定索引来删除,也可以切片删除(即指定删除范围)
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    del lst[1] #  指定元素(索引);['林志颖', '刘德华', '张柏芝']
    print(lst)
    
    #可以切片删除
    lst = ['林志颖', '张学友', '刘德华', '张柏芝']
    del lst[0:2]  # 指定删除范围,输出:['刘德华', '张柏芝']
    print(lst)

    3.3:列表的修改操作:

    # 修改里面的元素
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    print(lst)
    # 通过单个索引来修改
    lst[2] = '梁咏琪'
    print(lst)  # ['林志颖', '张学友', '梁咏琪', '张柏芝', '黄家驹', '周杰伦']
    
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    lst[-3] = '蜘蛛侠3'
    print(lst)  # ['林志颖', '张学友', '刘德华', '蜘蛛侠3', '黄家驹', '周杰伦']
    
    # 通过切片来修改
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    lst[1:3] = '男儿本色'
    print(lst)   #会迭代字符串 ['林志颖', '男', '儿', '本', '色', '张柏芝', '黄家驹', '周杰伦']
    
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    lst[1:3] = ['男儿本色']
    print(lst)  # ['林志颖', '男儿本色', '张柏芝', '黄家驹', '周杰伦']
    
    # lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    # lst[1:5:2] = ['男儿本色']  #报错 ValueError: attempt to assign sequence of size 1 to extended slice of size 2
    # print(lst)
    
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    lst[1:5:2] = ['男儿本色','男儿本色2']  # 注意如果元素的步长不是1,那么元素的个数要匹配
    print(lst)   #  ['林志颖', '男儿本色', '刘德华', '男儿本色2', '黄家驹', '周杰伦']

    3.4:列表的查询操作:

    # 列表是一个可迭代对象
    # 列表的查询(或者说遍历)
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦']
    for item in lst:
        print(item)
    
    for index,item in enumerate(lst):
        print(index,item)

    4:列表的相关操作:

    4.1:列表中元素出现的次数:

    # lst.count(元素) ;元素个数,第一层元素的个数,不比较子元素中的值
    lst = ['林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友']
    print(lst)
    print(lst.count('张学友'))  # 输出 2
    lst = ['张学友', '林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友']
    print(lst.count('张学友'))  # 输出 3
    
    lst = ['张学友', ['张学友'], '林志颖', '张学友', '刘德华', '张柏芝', '黄家驹', '周杰伦', '张学友']
    print(lst.count('张学友')) # 1号位为 ['张学友'],不是字符串 '张学友';输出 3
    print(lst.count(['张学友'])) #  输出 1

    4.2:列表中元素的排序:

    # 列表的排序
    lst = [3, 4, 9, 2,89,12]
    print(lst)
    lst.sort()
    print(lst)
    
    # 降序
    lst = [3, 4, 9, 2,89,12]
    lst.sort(reverse=True) # 降序
    print(lst)

    4.3:列表中元素的反转:

    # 列表中元素的反转
    lst = [3, 4, 9, 2,89,12]
    print(lst)
    lst.reverse()
    print(lst)

    4.4:列表中元素的长度

    # 其列表的长度
    lst = [3, 4, 9, 2,89,12]
    print(len(lst))

    4.5:列表中元素的下标

    lst = [3, 4, 9, 2,89,12]
    print(lst.index(89))  # 输出 4
    #print(lst.index(5))  # ValueError: 5 is not in list

    5:列表的嵌套:

    采用降维操作:一层一层的看就好。
    # 采用降维操作.一层一层的看就好.
    lst = ['林志颖', '张学友', '刘德华', ['男儿本色', ['吴孟达', 'hello','周杰伦'],'功夫之王', '蜘蛛侠3']]
    print(lst)
    # 找出'吴孟达',并打印出来
    print(lst[3][1][0])
    
    # hello 的首字母大写
    lst[3][1][1] = lst[3][1][1].capitalize()
    print(lst)

    6:range:

    range可以帮我们获取到一组数据,通过for循环能够获取到这些数据。
    for i in range(10):   # 0 到 9
        print(i)
    
    for i in range(1,10,2):
        print(i)     # 1 3 5 7 9
    
    for i in range(10,1,-2):
        print(i)  # 10 8 6 4 2

    7:列表的其他操作:

    7.1:Python列表脚本操作符

      列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

    Python 表达式结果描述
    len([1, 2, 3]) 3 长度
    [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
    ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
    3 in [1, 2, 3] True 元素是否存在于列表中
    for x in [1, 2, 3]: print x, 1 2 3 迭代

    
    

    7.2:Python列表函数&方法

    序号函数
    1 cmp(list1, list2)
    比较两个列表的元素
    2 len(list)
    列表元素个数
    3 max(list)
    返回列表元素最大值
    4 min(list)
    返回列表元素最小值
    5 list(seq)
    将元组转换为列表

      Python包含以下方法:

    序号方法
    1 list.append(obj)
    在列表末尾添加新的对象
    2 list.count(obj)
    统计某个元素在列表中出现的次数
    3 list.extend(seq)
    在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    4 list.index(obj)
    从列表中找出某个值第一个匹配项的索引位置
    5 list.insert(index, obj)
    将对象插入列表
    6 list.pop(obj=list[-1])
    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    7 list.remove(obj)
    移除列表中某个值的第一个匹配项
    8 list.reverse()
    反向列表中元素
    9 list.sort([func])   list.sort(reverse=True)
    对原列表进行排序
    
    

    8:总结:

    1:列表的定义:
    能装对象的对象,由[]表示,由','隔开;是可变数据类型
    索引和切片,从0开始
    [start,end,step]
    2:列表的增,删,改,查
    1:新增:append(),insert(),extend()(迭代添加)
    2:删除:pop(),remove(),clear(),del
    3:改:索引修改,切片修改
    4:查询:索引查询,for el in lst:
    5:操作:count(),index(),find(),sort(reverse = true),reverse()
    3:range()
    range(10) # 0到 9
    range(1,12) # 1 到 11
    range(1,12,3) # 1 4 7 10

    for el in lst: # 没有索引

    for i in range(len(lst)):
    lst[i]









  • 相关阅读:
    关于Java中变量的意义和注意事项
    成为Android高手的十个建议
    成为Java高手的25个学习目标(经典)
    流体力学神器:Naiad 0.6 Windows版试用
    饭前念诵+感恩辞+感恩白開水
    Android 基本开发规范(必读)
    Python批量重命名Maya场景中的3D物体
    Java高新技术视频笔记:反射
    程序员编程技术迅速提高的终极攻略
    三十、有关联网问题
  • 原文地址:https://www.cnblogs.com/ixuby/p/10117754.html
Copyright © 2020-2023  润新知