• 第一章 1.4 数据类型之列表


    一、什么是列表

    1、列表

    列表是python提供的容器型数据类型;以中括号[]作为容器标志;
    里面多个元素用逗号隔开:[1,2,3,4,5,6],元素的个数就是列表的长度
    列表是可变的、 有序的 ;

    • 可变性:(元素的个数,元素的值,元素的顺序)-元素支持增、删、改操作;
    • 有序性:支持下标操作

    2、列表元素:

    列表中的元素可以是任何类型的数据(赋值语句除外)
    同一个列表中的元素的类型可以不一样
    例:[123,12.4,True,'sdf',[1,4,5],(10,19),{'name':100},{1,2}]


    二、列表的相关操作

    1、查 ------> 获取列表中的元素

    1)、获取单个元素

    ①:语法:
    列表 [ 下标 ]

    ②:说明:
    列表----------->可以是列表值、保存列表的变量、结果是列表的表达式
    中括号[ ]------>固定写法
    下标------------>列表中的每个元素都会对应一个下标,来表示元素在列表中的位置

    下标范围:
     0到列表长度减一 - 从前往后以此增加,0表示第一个元素
     -1到负列表长度 - 从后往前依次递减,-1表示最后一个元素

    IndexError:list index out of range - 下标越界报错

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

    ①:语法:
    列表 [ 开始下标:结束下标:步长 ]

    列表[m:n:step] - 获取range(m,n,step)产生的数字序列作为下标去列表里取元素

    ②:其他用法:

    • 省略步长(默认步长是1):列表[开始下标:结束下标];[m:n]
    • 省略开始下标/步长:列表[:结束下标:步长];[:n:step]/列表[:结束下标][:n]
       如果步长为正,从前往后取;如果步长为负,从后往前取
    • 省略结束下标/步长:列表[开始下标::步长];[m::step]/列表[开始下标:][m:]
       从开始下标取到最后一个
    • 省略开始和结束下标:列表[::步长];[::step]/列表[:]

    ③:遍历列表:

    • 直接遍历:
      for 变量 in 列表:
        循环体
    • 通过下标遍历
      length = len(列表)
       for 变量 in range(length):
        元素 = 列表[变量]

    例:

    list = [1, 30, 69, 6, 58, 77, 106]
    print(list[4]) # 58
    print(list[2:5]) # [69, 6, 58]
    print(list[2:5:2]) # [69, 58]
    print(list[:4])
    prine(list[3:])
    print(list[:])
    

    2、增 ------> 添加元素

    1)、列表.append [ 元素 ] ------> 在列表的最后添加元素

    2)、列表.insert [ 下标 ,元素 ] ------> 在列表指定下标位置添加元素

    list = ['肖申克的救赎', '功夫', '霸王别姬', '卧虎藏龙', '天方异谭', '恐怖游轮']
    print(list.append['我不是药神'])
    print(list.insert[-3, '大圣归来'])
    

    3、删 ------> 删除列表元素

    1)、del列表[下标]------>删除指定下标的元素

    2)、列表.remove(元素)------>删除列表中指定的元素

    注:若列表中没有指定的元素,报错
       若列表中有多个相同的指定元素,删除第一个

    3)、列表.pop()------>取出列表中最后一个元素

       列表.pop(下标)------>取出列表中指定下标的元素

    注:pop()中,元素是被取出,并没有被删除;只是对列表来说,元素减少了,如果将pop取出的值用变量保存并打印出来,能得到该元素

    num = [2, 50, 8, 9, 43]
    prunt(num.pop(2)) # 8
    print(num) # [2, 50, 9, 43]
    

    练习

    # 练习下面这个列表中小于60的元素
    # 答案:[89, 90, 78, 60, 87]
    方法一、
    scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
    for num in scores[:]: # 如果在原列表中删除,那么原列表的元素下标会不断变化,
    #最后程序虽然不报错,但是结果不准确
      if num < 60:
        scores.remove(num)
    print(scores)
    
    方法二、
    scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
    scores2 = scores[:]
    length = len(scores2)
    t = 0
    for x in range(length):
      if scores2[x] < 60:
        scores.remove(scores[x])
      else:
        t += 1
    print(scores)
    

    4、改------>修改列表中的元素

    列表[下标] = 值------>修改列表中指定的元素

    练习:将下列表中小于60的分数换成不及格
    scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
    length = len(scores)
    for x in range(length):
        if scores[x] < 60:
            scores[x] = '不及格'
    print(scores)
    


    三、列表运算

    1、数学运算

    1)、加法

    • 新列表中的元素是两个列表中元素的合并
      2)、乘法
    • 列表中的元素重复N次,产生一个新的列表
    list1 = [1, 2, 3, 4]
    list2 = ['王二', '张三', '李四']
    print(list1 + list2)
    print(list1 * 3)
    

    2、比较运算符

    • 等于和不等 == 、!=
      元素的内容,个数,顺序都一样才相等
    • 大于、小于 > >= < <=
      两个列表的比较:先比较第一队元素的数值大小,第一队数值的大小就是列表的大小,如果第一队数值相等或者比较不了大小,比较第二队
    li1 = [1,2]
    li2 = [1,2]
    print(li1 == li2)
    print(li1 == li2) # print(id(li1) == id(li2))
    

    3、is / in / not in

    • is 判断两个列表的地址是否相等
    • 元素 in 列表------>判断列表中是否存在指定元素
    • 元素 not in 列表------>判断列表中是否不存在指定元素
    names = ['小红', '小强', '小明']
    print('小明' in names)
    print('李四' in names)
    

    4、列表相关函数

    len / max / min / list / sum

    1)、len(序列)------>获取序列的长度(元素的个数)

    2)、max(序列)min(序列)------>获取序列中最大值和最小值

    对序列的要求:
      1.序列中所有元素的类型一致(数字看成一个类型)
      2.元素本身支持比较大小

    3)、sum(数字序列)------>求序列中所有元素的和

    (要求序列中的元素全是数字)

    4)、list(序列)------>将其他类型的序列转换成列表;序列是容器型数据



    四、列表的其他操作

    1、列表.count(元素)------>统计列表中指定元素的个数

    2、列表.extend(序列)------>将其他序列的元素全部添加到列表中

    3、列表.index(元素)------>获取指定元素在列表中的下标

    • a.若元素不存在,报错
    • b.若元素有多个

    4、列表.revers()------>将原来的列表倒序(反过来)

    5、列表.clear()------>清空列表

    • 清空列表用clear函数,不直接赋值为[]。

    6、列表.copy()------>复制列表中的元素,产生一个新的列表,赋值后两个相互不影响

    7、列表.sort()------>将列表中的元素从小到大排序(直接修改列表中元素的顺序,不产生新列表)

    • 列表.sort(revers=True) ----- 将列表中的元素从大到小排序
    • 列表.sort(revers=True) 相当于 列表.sort() ;列表.revers()

    8、sorted(序列)------>不修改原序列,排序后产生一个新的列表(从小到大)

    • sorted(序列,reverse=True) 从大到小
  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/anjhon/p/11892265.html
Copyright © 2020-2023  润新知