zoukankan      html  css  js  c++  java
  • 我的Python入门笔记(7)

    四章、列表


    Sparse is better than dense.——The Zen of Python


     一、列表概述

      列表(List)是Python中的一种数据结构,内置的可变序列。在形式上,列表的所有元素都放在一对中括号“[ ]”中,两个相邻的元素使用逗号“,”进行分割,在内容上,可以将整数、字符串、列表、元组、等任何类型的内容放入列表中,并且同一个列表中,元素的类型可以不同。

    二、 列表的创建和删除

      在Python中有多种创建列表的方法:

      1.使用赋值运算符直接创建列表

      在创建列表时,可以直接使用赋值运算符“=”直接将一个列表赋值给一个变量,语法格式如下:

      listname = [ element1,element2,element3,···,element n]

        listname: 列表的名称

        element1 :列表中的元素

    1 num = [220,284,1210,1184,26]
    2 strlist=['雨霓同学','年龄','性别',['编号,组成']]
    3 strlist2 = ['150000001','']
    4 print(num,strlist,strlist2)

      在使用列表时,虽然可以将不同类型的数据放入到同一列表中,但是通常情况下,并不会这样做,而是在一个列表中只放入一种类型的数据,这样可以提高程序的可读性。

      2.创建空列表

      在Python中,眱创建空列表,例如创建一个名为ceshilist的空列表,则可以使用如下代码:ceshilist = [].

      3. 创建数值列表

      在Python中,可以使用list()函数直接将range()函数循环出来的结果转换为列表。list()函数的基本语法如下:

      list(data)    其中data表示可以转换为列表的数据,其类型可以是range对象、字符串、元组或者其他可迭代的类型数据。

    list1=list(range(0,10,2))
    print(list1)
    输出:
    [0, 2, 4, 6, 8]

       4.删除列表

      对于已经创建的列表,不在使用时,可以使用del语句将其删除。语法格式为:del listname   listname为要删除列表的名称。一般这玩意不太用。在Python自带的垃圾回收机制会自动销毁不用的列表,所以即使我们不手动将其删除,Python也会将其自动回收。但是列表要是不存在,在进行删除操作时,则会报错。

    三、访问列表元素

      在Python中,可以直接使用print()函数将列表内容进行输出

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 print(list1)
    3 输出:
    4 ['雨霓同学', 220, 284, '亲和数对:1210&1184', ['人生苦短,我用python']]

      从上述实例可以看出,在输出列表时,是包括左右两侧的中括号的。如果不想要输出全部元素,也可以通过列表的索引获取指定的元素。这与之前的访问序列的方法是一样的。

      3.1 遍历列表

      遍历列表中的所有元素是常用的一种操作,在遍历的过程中可以完成查询、处理等功能,Python中遍历列表的方法有多种。可以使用如下的方法进行列表的遍历。

      1.直接使用for循环实现  

      使用for循环遍历列表,只能输出元素的值,其语法格式如下:

      for item in listname 

        item: 用于保存获取到的元素值,要输出元素内容时,直接输出该变量即可

        listname: 列表名称

      示例如下:

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 for item in list1:
    3     print(item)
    4 输出:
    5 雨霓同学
    6 220
    7 284
    8 亲和数对:1210&1184
    9 ['人生苦短,我用python']

      2.使用for循环和enumerate()函数实现

      使用for循环和enumerate()函数可以实现同时输出索引值和元素的功能,其语法格式如下:

      for index,item in enumerate(listname)

        index:用于保存元素的索引

        item: 用于保存获取到的元素值,要输出元素内容时,直接输出该变量即可。

        listname: 列表的名称

      示例如下:

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 for index,item in enumerate(list1):
    3     print(index+1,item)
    4 输出:
    5 1 雨霓同学
    6 2 220
    7 3 284
    8 4 亲和数对:1210&1184
    9 5 ['人生苦短,我用python']

      3.2 添加、修改和删除列表元素

      添加、修改和删除列表元素也称为更新列表。在实际开发时,经常需要对列表进行更新。

      1.添加元素

      在前面介绍过,通过“+”可以将两个序列连接,通过该方法也可以实现列表元素的添加。但是这种方法的执行速度要比直接使用列表对象的append()方法慢,所以一般使用append()方法在列表的末尾追加元素,其语法格式如下:

      listname.append(obj)

      listname: 要添加元素的列表名称

      obj : 要添加到列表末尾的对象

      示例如下:  

    list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    list1.append("你猜猜这是啥")
    print(list1)
    输出:
    ['雨霓同学', 220, 284, '亲和数对:1210&1184', ['人生苦短,我用python'], '你猜猜这是啥']

      列表对象除了提供append()方法向列表中添加元素,还提供了insert()方法向列表中添加元素。该方法用于向列表的指定位置插入元素。但是该方法的执行效率没有append()方法高一般不建议使用,其语法格式如下:

      listname.insert(index, obj)   #其中index:为要插入位置的索引

      此外,如果想要将一个列表中的全部元素添加到另一个列表中,可以使用列表对象的extend()方法,其语法格式如下:

      listname.extend(seq)

      listname:原列表,seq:要添加的列表。语句执行后,seq的内容将添加到listname的后面

      有没有一种方法,将一个列表添加到另一个列表的任意位置。

      2.修改元素

      修改列表中的元素,只需要通过索引获得该元素,然后再为其重新赋值即可,示例如下:

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 list1[2]=1210
    3 print(list1)
    4 输出:
    5 ['雨霓同学', 220, 1210, '亲和数对:1210&1184', ['人生苦短,我用python']]

      3.删除元素

      删除元素主要有两种情况,一种是根据索引删除,一种是根据元素值删除。

      根据索引删除:删除列表中的指定元素和删除列表类似,也可以使用del语句实现,所不同的是在指定列表名称时,换为列表元素。示例如下:

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 del list1[-1]  #删除最后一个元素
    3 print(list1)
    4 输出:
    5 ['雨霓同学', 220, 284, '亲和数对:1210&1184']

      使用pop()方法删除:pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,语法格式如下:

      list.pop([index=-1])
    1 list1=[220,284,1210,1184,26,22,45]
    2 list2=list1.pop(1)
    3 print("删除的项为:",list2)
    4 print("现在的列表为:",list1)
    5 输出:
    6 删除的项为: 284
    7 现在的列表为: [220, 1210, 1184, 26, 22, 45]

      根据元素值删除:想要删除一个不确定其位置的元素(根据元素值进行删除),可以使用列表对象的remove()方法实现,示例如下: 

    1 list1=['雨霓同学',220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 list1.remove(284)  #删除最后一个元素
    3 print(list1)
    4 输出:
    5 ['雨霓同学', 220, '亲和数对:1210&1184', ['人生苦短,我用python']]

       但是在使用remove()方法删除元素前,应该先判断元素是否存在,然后再进行删除,如果指定元素不存在,则会提示报错。

      4.对列表元素进行统计计算

      在Python列表中,提供了一些内置函数实现统计、计算等方面的功能。

      4.1 获取指定元素出现的次数

      使用列表对象的count()方法可以获取指定元素在列表中出现的次数,其基本语法格式如下:

      listname.count(obj)

      listname:表示列表的名称

      obj:表示要判断是否存在的对象,这里只能进行精确匹配,即不能是元素值的一部分。

      示例如下:

    1 list1=['雨霓同学',220,284,220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 num=list1.count(220)
    3 print(num)
    4 输出:
    5 2

       4.2获取指定元素首次出现的索引

      使用列表对象的index()方法可以获取指定元素在列表中首次出现的位置(索引),基本语法格式:

      listname.index(obj)

      listname:列表的名称

      obj:表示要查找的对象,只能进行精确匹配,如果指定对象不存在则会抛出异常。

      示例如下:

    1 list1=['雨霓同学',220,284,220,284,"亲和数对:1210&1184",['人生苦短,我用python']]
    2 num=list1.index(220)
    3 print(num)
    4 输出:
    5 1

       4.3统计数值列表的元素和

      在Python中,提供了sum()函数用于统计数值列表中各种元素的和,其语法格式如下:

      sum(iterable [,start ])

      interable:表示要统计的列表

      start:表示统计结果是从哪个数开始(即将统计结果加上start所指定的数),可选参数,如果没有指定,默认值为0.

      示例如下:

    1 list1=[220,284,1210,1184,26,22,45]
    2 total=sum(list1)
    3 print(total)
    4 输出:
    5 2991

      5.对列表进行排序

      在Python中提供了两种常用的方法对列表进行排序:使用列表对象的sort()方法和使用内置的sorted()函数。

      1.使用列表对象的sort()方法实现

      列表对象提供了sort()方法用于对原列表中的元素进行排序。排序后原列表中的元素数学将发生改变,其语法格式如下:

      listname.sort(key=none,reverse=False)

      listname:表示要进行排序的列表

      key:表示指定一个从每个列表元素中提取一个用于比较的键(例如:设置“key=str.lower”表示在排序时不区分大小写。)

      reverse:可选参数,如果将其指定为True,则表示降序排序,如果为False,则表示升序排序,默认为升序排序。

      示例如下:

     1 list1=[220,284,1210,1184,26,22,45]
     2 print("初始列表:",list1)   #默认列表
     3 list1.sort()
     4 print("升序列表:",list1)   #升序列表
     5 list1.sort(reverse=True)
     6 print("降序列表",list1)   #降序列表
     7 输出:
     8 初始列表: [220, 284, 1210, 1184, 26, 22, 45]
     9 升序列表: [22, 26, 45, 220, 284, 1184, 1210]
    10 降序列表 [1210, 1184, 284, 220, 45, 26, 22]

      此外在使用sort()方法对字符串列表进行排序,采用的规则是先对大写字母排序,然后在对小写字母排序。如果想要对字符串列表排序(不区分大小写),则需要指定Key参数。

      示例如下:

    1 listname=["pet",'Brother','Tom','Age','years','Bat']
    2 listname.sort()
    3 print('区分大小写:',listname)
    4 listname.sort(key=str.lower)
    5 print('不区分大小写:',listname)
    6 输出:
    7 区分大小写: ['Age', 'Bat', 'Brother', 'Tom', 'pet', 'years']
    8 不区分大小写: ['Age', 'Bat', 'Brother', 'pet', 'Tom', 'years']

      采用sort()方法对列表进行排序的时候,对中文支持很不友好,排序结果与常用的音序和笔画排序都不一样,如果需要实现对中文的排序,需要重新编写想要的方法进行处理,不能直接使用sort()方法。

      2.使用内置的sorted()函数实现

      在Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数排序后,原列表的元素顺序不变,其语法格式如下:

      sorted(interable,key=none,reverse=False)

      inerable: 表示要进行排序的列表名称。

      key:表示指定一个从每个列表中提取一个用于比较的键,

      revese:可选参数,如果将其指定为True,则表示降序排列;如果为False表示升序排列。默认为升序排列。

      示例如下: 

     1 list1=[220,284,1210,1184,26,22,45]
     2 list2=sorted(list1)
     3 print("升序:",list2)
     4 list3=sorted(list1,reverse=True)
     5 print('降序:',list3)
     6 print('原序列',list1)
     7 输出:
     8 升序: [22, 26, 45, 220, 284, 1184, 1210]
     9 降序: [1210, 1184, 284, 220, 45, 26, 22]
    10 原序列 [220, 284, 1210, 1184, 26, 22, 45]

      列表对象的sort()方法,在排序时会改变原列表的元素排列顺序,而使用sorted()函数时,会建立一个原列表的副本,改副本为排序后的列表。

      6. 列表推导式

      使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表,其常用语法格式如下:

      1. 生成指定范围的数值列表

      list = [expression for vat in range]

      list: 表示要生成的列表名称

      exprsessiom: 表达式,用于计算新列表的元素

      var:循环变量

      range: 采用range()函数生成的range对象

      示例如下: 

    1  # 生成一个包括10个随机数的列表,范围在10~100之间
    2 import random  # 导入random(随机数)
    3 random_numbers=[random.randint(10,100) for i in range(10)]
    4 print("生成的随机数:",random_numbers)
    5 输出:
    6 生成的随机数: [60, 44, 72, 89, 81, 64, 75, 70, 77, 37]

      2.根据列表生成指定需求的列表

      newlist = [expressiom for var in list]

      newlist: 表示新生成的列表名称

      expression:表达式泳衣计算新列表元素

      var: 变量,值为后面列表的每个元素值

      list: 用于生成新列表的原列表

      示例如下:

    1 price=[220,284,1210,1184,26]
    2 sale =[int(x*0.5) for x in price]
    3 print("原始价格:",price)
    4 print("打五折价格:",sale)
    5 输出:
    6 原始价格: [220, 284, 1210, 1184, 26]
    7 打五折价格: [110, 142, 605, 592, 13]

      3.从列表中选择符合条件的元素组成新的列表

      newlist=[Expression for var in list if condition]

      newlist:新生成列表的名称

      Expression: 表达式,用于计算新列表的元素

      var: 变量,值为后面列表的每个元素值。

      list: 用于生成新列表的原始列表

      condition: 条件表达式,用于指定筛选条件。

    1 price=[220,284,1210,1184,26]
    2 sale =[x for x in price if x > 256]
    3 print("原始价格:",price)
    4 print("价格高于256的:",sale)
    5 输出:
    6 原始价格: [220, 284, 1210, 1184, 26]
    7 价格高于256的: [284, 1210, 1184]
  • 相关阅读:
    Gitlab安装与备份恢复
    Logstash使用grok插件解析Nginx日志
    SSH登录启用Google二次身份验证
    Nginx隐藏标识以及其版本号
    Nginx虚拟目录设置
    Tomcat虚拟目录设置
    sqlserver无法连接
    Howto: 如何将ArcGIS Server缓存移动到新服务器
    优酷网架构学习笔记
    .net中自定义过滤器对Response内容进行处理
  • 原文地址:https://www.cnblogs.com/1210x1184/p/11009503.html
Copyright © 2011-2022 走看看