为了账号安全,请及时绑定邮箱和手机立即绑定

Python数据类型之列表

标签:
Python 源码

https://img1.sycdn.imooc.com//5dfdf7480001aed414401080.jpg

1. 序列

   (1).序列是Python中最基本的数据结构。序列中的每一个元素都分配一个数字,代表它在序列中的位置(索引),第一个索引时0,第二个索引是1,以此类推。

   (2).序列中的所有元素都是有编号的,从0开始递增;可以通过编号分别对序列的元素进行访问:在变量后加中括号,在中括号中输入所取元素的编号值。

   (3).序列是一种数据存储方式,用来存储一系列的数据,在内存中,序列就是一块用来存放多个值的连续的内存空间,比如整数系列[10, 20, 30, 40]。

   (4).Python中一切皆对象,在内存中实际是按照a = [10, 20, 30, 40]这种方式存储的。

   (5).在Python中,常用的序列结构有:字符串,列表,元组,字典,集合等。

   (6).Python中所有序列都可以进行一些特殊操作,包括索引,分片,序列相加,乘法,成员资格,长度,最小值和最大值;

   (7).序列中的元素从0开始,从左向右依自然顺序编号递增;也可以从右向左开始索引,最右边的元素索引值为-1,从右向左递减;

   (8).在Python中,从左向右索引称为正数索引,从右向左索引称为负数索引。使用负数索引时,Python会从最后一个元素开始计数,最后一个元素的位置编号是-1。


2. 列表

   列表:用于存储任意数目,任意类型的数据集合。

   列表是内置可变序列,是包含多个元素的有序连续的内存空间。

   列表定义如下:a = [10, 20, 30, 40], 其中,10,20,30,40这些称为:列表a的元素,可以使用索引来获取到

   列表中的元素可以是任意类型的,也可以是列表。列表中包含列表就是嵌套列表。

   列表大小可变,可以根据需要随时增加或缩小。

   字符串和列表都是系列类型,一个字符串是一个字符系列,一个列表是任何元素的序列。


3. 列表的创建

   (1) 列表的创建使用[]来实现,列表元素直接使用逗号(,)分隔开。

   创建一个空列表a:a = []


   (2) 使用list()可以将任何可迭代的数据转化为列表,

   比如:a = list(range(10))


   (3) 使用range()创建整数列表

   range()可以帮助我们非常方便的创建整数列表,语法为:range([start,] end [,step]), 参数说明:

   start参数: 可选,表示起始数字,默认为0;

   end参数: 必填,表示结尾数字;

   step参数:可选,表示递增步长,不写默认步长为1;

   Python3中range()返回的是一个range对象,而不是列表,我们还需要使用list()方法将其转化成列表对象;

   比如:list(range(3, 15, 2))


   (4)结合for循环推导式生成列表,比如:

      a = [x*2 for x in range(5)]   # 生成一个整数列表

      a = [x*3 for x in range(100) if x % 9 == 0]  # 通过if条件过滤生成列表


4. 获取列表元素

   (1) 使用列表元素的下标索引来获取到对应的值

   (2) 通过切片slice操作来获取列表的子列表或修改这个列表,语法:[起始偏移量 start: 终止偏移量 end [: 步长 step]]

       [:] 提取整个列表

       [start:] 从start索引开始到结尾

       [:end] 从头开始到end-1

       [start:end] 从start到end-1

       [start:end:step] 从start提取到end-1,步长是step

       [-start:]  倒数start

       [start::-1] 从start开始提取,步长为负数,逆向提取

       [-start:-end] 倒数第start个到倒数第end-1个

       [::-1]  步长为负数,从右到左反向提取

       切片操作时,起始偏移量和终止偏移量不在[0, 字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会被当做0处理,终止偏移量大于“长度-1”会被当做-1处理。


5. 修改列表

   通过列表的索引取出列表值,然后赋予新值;另外可以使用append()方法为列表添加新值;

   在Python的列表中,不能为一个不存在的位置赋值。一旦初始化了一个列表,就不能再往这个列表中增加元素了。如果需要往列表中增加元素,需要使用列表的append()方法来实现。

   比如:list1 = ['abc', 'def', 'ABC', 'DEF']

   list1[2] = 200   # 修改列表元素

   list1.append("100")  # 增加列表元素

   也可以使用列表的分片来为列表赋值,比如:

   list1[2:2] = list("ghij")

   最终的列表list1 = ['abc', 'def', 'g', 'h','i','j' 'ABC', 'DEF']


6. 删除列表元素

   可以def语句或remove()方法来删除列表元素

   比如:del list1[2]

   也可以使用列表的分片操作来删除元素,比如:

   list1[1:2] = []


7. Python列表操作符

   (1) + 使用加操作符合(+)并两个列表

   (2) * 使用乘操作符号(*)复制列表

   (3) in 判断某个元素是否存在于某个列表, 存在返回True,不存在返回False

   (4) not in 判断某个元素是否不存在于某个列表,不存在返回True,存在返回False

代码示例:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# author : liuhefei
# Time : 2019/11/9
# desc:  Python数据类型之列表

if __name__ == "__main__":
    # 定义一个空列表
    list1 = []

    # 定义一个整数列表
    list2 = [1, 22, 333, 4444, 55555, 666666]

    # 定义一个字符串列表
    list3 = ['Java', 'Python', 'Html5', 'JavaScript', 'Vue.js']

    # 使用range生成一个整数列表
    list4 = list(range(20, 3))
    print("list3 = ", list3)

    # 结合for循环推导式生成列表
    a = [x * 2 for x in range(5)]  # 生成一个整数列表
    print("列表a = ", a)

    b = [x * 3 for x in range(100) if x % 9 == 0]  # 通过if条件过滤生成列表
    print("列表b = ", b)

    # 访问列表中的元素
    #print("list1[0] = ", list1[0])  # 报错,空列表
    print("list2[2] = ", list2[2])
    print("list3[4] = ", list3[4])

    # 修改列表的元素
    print("list2的第5个元素是:", list2[5])
    list2[5] = 'CSS3'
    print("更新的list2为: ", list2)

    list3[0] = '莫愁前路无知己'
    list3[1] = '天下谁人不识君'
    print("list3 = ", list3)

    # 删除列表元素
    print("list2 = ", list2)
    del list2[5]
    print("删除元素后的list1 = ", list2)

    # 也可以使用列表的分片操作来删除元素,比如:
    list2[1:3] = []
    print("list2 = ", list2)

    # 添加列表元素
    print("list1 = ", list1)
    list1.append("己所不欲")
    list1.append("勿施于人")
    list1.append("沉鱼落雁")
    list1.append("闭月羞花")
    print("添加元素后的list = ", list1)

    # 使用列表的分片来增加元素
    list1[2:2] = list(("一心一意", "二龙戏珠", "三从四德", "四通八达"))
    print("list1 = ", list1)

    # [:] 提取整个列表
    print("b[:] = ", b[:])

    # [start:] 从start索引开始到结尾
    print("b[5:] = ", b[5:])

    # [:end] 从头开始到end-1
    print("b[:25] = ", b[:25])

    # [start:end] 从start到end-1
    print("b[5:30] = ", b[5:30])

    # [start:end:step] 从start提取到end-1,步长是step
    print("b[5:50:3] = ", b[5:50:3])

    # [-start:]  倒数start
    print("b[-5] = ", b[-5])

    # [-start:-end] 倒数第start个到倒数第end-1个
    print("b[-2:-8] = ", b[-2:-8])

    # [::-1]  步长为负数,从右到左反向提取
    print("b[::-1] = ", b[::-1])

    # [start::-1] 从start开始提取,步长为负数,逆向提取
    print("b[3::-1] = ", b[3::-1])

    #  + 使用加操作符合(+)并两个列表
    print("list1 + list2 = ", list1 + list2)
    print("list3 + list4 = ", list3 + list4)

    #  * 使用乘操作符号(*)复制列表
    print("list1*3 = ", list1*3)
    print("list2*2 = ", list2*2)

    #  in 判断某个元素是否存在于某个列表, 存在返回True,不存在返回False
    if 4444 in list2:
        print("4444在列表list2中")
    else:
        print("4444不在列表list2中")

    #  not in 判断某个元素是否不存在于某个列表,不存在返回True,存在返回False
    if 4 not in [1, 2, 3, 4]:
        print("4不存在于列表中")
    else:
        print("4存在于列表中")

    # 定义一个嵌套列表
    lists = [1, 2, 3, 4, [8, 9, 10, 11]]
    print("lists = ", lists)

    list5 = [1, 2, 3, 4, (10, 20, 30, 40)]
    print("list5 = ",list5)

https://img1.sycdn.imooc.com//5dfdf7be00016e1214401080.jpg

8. 列表函数

(1). len(list) 获取列表的元素个数


(2). max(list) 返回列表元素中的最大值


(3). min(list) 返回列表元素中的最小值


(4). list(seq) 该方法用于将元组或字符串转化为列表。seq是要转化为列表的元组或字符串。


(5). list.append(obj) 该方法用于在列表末尾添加新的对象。obj代表需要添加到列表list末尾的对象。append()方法不是简单的返回一个修改过的新列表,而是直接修改原来的列表。


(6). list.count(obj) 该方法用于统计某个元素在列表中出现的次数,其中obj代表列表中统计的对象。


(7). list.extend(seq) 该方法用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),其中seq代表元素列表。


(8). list.index(obj) 该方法用于从列表中找出某个值第一个匹配项的索引位置,obj代表要查找的对象。


(9). list.insert(index, obj) 该方法用于将对象插入列表,其中index代表对象obj需要插入的索引位置,obj代表需要插入列表中的对象。


(10). list.pop([index=-1]) 该方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

    pop()方法是唯一一个既能修改列表又能返回元素怒值(除了None)的列表方法。使用pop()方法可以实现数据结构中的栈


(11). list.remove(obj) 该方法用于移除列表中某个值的第一个匹配项,obj为类别中要移除的对象。


(12). list.reverse() 该方法用于反向列表中的元素(逆序)


(13). list.sort() 该方法用于对原列表进行排序,如果指定参数,就使用参数指定的比较方法进行排序。

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

    参数说明:key主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse定义排序规则,如果reverse = True 降序, reverse = False 升序(默认)。


(14). list.clear() 该方法用于清空列表


(15). list.copy() 该方法用于复制列表

说明:list.extend(seq), list.insert(index, obj), list.remove(obj), list.reverse(), list.sort(), str1.clear()等方法均返回None。

代码示例:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# author : liuhefei
# Time : 2019/11/17
# desc:  Python列表函数

if __name__ == "__main__":
    num = [1, 8, 0, 3, 6, -1, -9, 100, 7, 2, 1, 2, 3, 100, 8]
    num1 = [10, 20, 30, 40, 50, 60, 70]
    str1 = ['a', 'd', 'f', 'g', 'd', 'b', 'c', 'd']
    str2 = [1, 9, 6, 'A', 'B', 'C', 'a', 'b', 'c']
    str3 = "为了报仇我计划三年"
    str4 = ['我们', '你们', '它们', '他们', '她们']
    # 如果没人欣赏你,那就自己欣赏自己;如果没人祝福你,那就自己祝福自己。
    str5 = ["难过", "别", "如果没人", "别害怕", "自己欣赏自己",
            "欣赏你那就", "那就自己祝福自己", "如果没人祝福你"]
    str6 = ['f', 'b', 'z', 'w', 'a', 'c', 'k']
    tuple = ("假如爱有天意", "雪飞落",
             "风拂面", "雪恋衣裳", "人念人")

    # 1. len(list) 获取列表的元素个数
    print("len(num) = ", len(num))
    print("len(str1) = ", len(str1))
    print("len(str2) = ", len(str2))

    # 2. max(list) 返回列表元素中的最大值
    print("max(num) = ", max(num))
    print("max(str1) = ", max(str1))
    # print("max(str2) = ", max(str2))  #报错,类型不一致

    # 3. min(list) 返回列表元素中的最小值
    print("min(num) = ", min(num))
    print("min(str1) = ", min(str1))

    # 4. list(seq) 该方法用于将元组或字符串转化为列表。
    # seq是要转化为列表的元组或字符串。
    print("list(str3) = ", list(str3))
    print("list(tuple) = ", list(tuple))

    # 5. list.append(obj) 该方法用于在列表末尾添加新的对象。
    # obj代表需要添加到列表list末尾的对象。
    # append()方法不是简单的返回一个修改过的新列表,而是直接修改原来的列表。
    num.append(1000)
    num.append(10000)
    print("num = ", num)

    str1.append('h')
    str1.append('i')
    str1.append('j')
    print("str1 = ", str1)

    # 6. list.count(obj) 该方法用于统计某个元素在列表中出现的次数,
    # 其中obj代表列表中统计的对象。
    print("num.count(100) = ", num.count(100))
    print("str1.count('a') = ", str1.count('a'))
    print("str2.count('a') = ", str2.count('a'))

    # 7. list.extend(seq) 该方法用于在列表末尾一次性
    # 追加另一个序列中的多个值(用新列表扩展原来的列表),
    # 其中seq代表元素列表。
    print("str1.extend(str2) = ", str1.extend(str2))
    print("str1 = ", str1)
    print("num.extend([100, 200, 300]) = ",
          num.extend([100, 200, 300]))
    print("num = ", num)

    # 8. list.index(obj) 该方法用于从列表中找出某个值
    # 第一个匹配项的索引位置,obj代表要查找的对象。
    print("num.index(100) = ", num.index(100))
    print("str1.index('d') = ", str1.index('d'))

    # 9. list.insert(index, obj) 该方法用于将对象插入列表,
    # 其中index代表对象obj需要插入的索引位置,
    # obj代表需要插入列表中的对象。该方法不会返回值。
    print("num.insert(5, 10000) = ", num.insert(5, 10000))
    print("num = ", num)

    print("str1.insert(2, 'ABCD') = ", str1.insert(2, "ABCD"))
    print("str1 = ", str1)

    print("str2.insert(4, 'abcd') = ", str2.insert(4, 'abcd'))
    print("str2 = ", str2)

    # 10. list.pop([index=-1]) 该方法用于移除列表中的一个元素
    # (默认最后一个元素),并且返回该元素的值。
    #  pop()方法是唯一一个既能修改列表又能返回元素怒值(除了None)的
    #  列表方法。使用pop()方法可以实现数据结构中的栈
    print("num = ", num)
    print("num.pop() = ", num.pop())
    print("num.pop(5) = ", num.pop(5))
    print("num.pop(-4) = ", num.pop(-4))

    # 11. list.remove(obj) 该方法用于移除列表中某个值的
    # 第一个匹配项,obj为类别中要移除的对象。
    print("str1.remove('a') = ", str1.remove('a'))
    print("str1 = ", str1)

    print("str4.remove('它们') = ", str4.remove('它们'))
    print("str4 = ", str4)

    # 12. list.reverse() 该方法用于反向列表中的元素(逆序)
    print("num1 = ", num1)
    print("num1.reverse() = ", num1.reverse())  # 不返回值
    print("num1 = ", num1)

    print("str4 = ", str4)
    print("str3.reverse() = ", str4.reverse())  # 不返回值
    print("str4 = ", str4)

    # 13. list.sort() 该方法用于对原列表进行排序,
    # 如果指定参数,就使用参数指定的比较方法进行排序。
    # list.sort( key=None, reverse=False) 对原列表进行排序,
    # 参数说明:key主要是用来进行比较的元素,只有一个参数,
    # 具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    # reverse定义排序规则,如果reverse = True 降序, reverse = False 升序(默认)。
    # sort()方法不返回值
    print("num.sort() = ", num.sort())
    print("num = ", num)

    print("str5.sort(key=len, reverse=True")
    print("str5 = ", str5)

    print('str6.sort() = ', str6.sort())
    print("str6 = ", str6)

    print("str6.sort(key=max) = ", str6.sort(key=max))
    print("str6 = ", str6)

    # 14. list.copy() 该方法用于复制列表
    print("newStr1 = ", str1.copy())
    print("newNum = ", num.copy())

    # 15. list.clear() 该方法用于清空列表
    print("str1.clear() = ", str1.clear())
    print("str1 = ", str1)

    print("str2.clear() = ", str2.clear())
    print("str2 = ", str2)

来源:gzh:学虽易学好难 (stydy3344)

结束语:让坚持成为一种习惯!

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消