Python入门——第三章 列表和元组:3.2列表

Python入门


3.2列表

列表由一系列按特定顺序排列的元素组成的可变序列。元素放在 [ ]中,用逗号(,)分隔。

可以将整数、实数、字符串、列表、元组等任何类型的内容放入列表。

注:在同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。

3.2.1列表的创建和删除
  • 使用赋值运算符直接创建列表
    listname = [element1,element2,element3,...,elementn]
    

    虽然可以将不同类型的数据放入同一个列表,但为了程序的可读性,通常不这么做。

  • 创建空列表
    emptylist = []
    
  • 创建数值列表

    list() 函数,不仅能通过range对象创建列表,还可以通过其他对象创建列表。

    list(data)
    list(range(10,20,2))   #[10, 12, 14, 16, 18]
    
  • 删除列表

    del 语句:删除列表

    del listname
    

    删除列表前,必须保证该列表已存在。

    实际开发中,del语句并不常用,因为Python自带的“垃圾回收”机制会自动销毁不用的列表。

3.2.2 访问列表元素
3.2.3 遍历列表
  • 使用for循环遍历
    for item in listname:
        #输出item
    

    item 用于保存获取到的元素值

  • 使用for循环和**enumerate()**函数实现
    for index,item in enumerate(listname):
        #输出index和item
    

    index用于保存获取到的元素索引

    list1= [1,2,3]
    for index ,item in enumerate(list1):
        print(index+1,item)
        #1 1\n2 2\n 3 3\n
    
3.2.4 添加、修改和删除列表元素
  • 添加元素

    可用’ + '将两个序列连接起来为列表添加元素,但这种方法的执行速度比直接使用append()函数方法慢。

    • append() 在列表末尾追加元素

      listname.append(obj)
      
    • insert() 在指定位置插入元素

      insert()执行效率没有appen()高

    • extend() 将一个列表中的全部元素添加到另一个列表

      listname.extend(seq)
      
  • 修改元素

    直接通过索引获取元素,并重新赋值

  • 删除元素
    • 通过索引删除

      与删除列表类似,直接把del语句后的列表名换成指定列表元素即可

      del list1[2]
      
    • 通过元素值删除

      remove():删除一个不确定其位置的元素(根据元素值删除)

      list1.remove(value);
      

      若该元素值在列表中不存在,会出现异常,改进如下

      if list1.count(value)>0:      #判断要删除的元素是否存在
          list1.remove(value)       #若存在,则删除指定的元素
      

      count()函数用于判断指定元素出现的次数。

3.2.5 对列表进行统计计算
  • 获取指定元素出现的次数count()
    listname.count(obj)
    
  • 获取指定元素出现的次数index()
    listname.index(obj)
    
  • 统计数值列表的元素和sum()
    sum(list[start])
    
    • start:表示统计结果从哪个数开始(即将统计结果加上start所指定的数),是可选参数,若没有指定,默认值为0
    a = [1,2,3,4,5]
    print(sum(a))   #15
    
3.2.6 对列表进行排序
  • 使用列表对象的sort()方法实现
    listname.sort(key=Node,reverse=False)
    

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

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

    • 使用sort()方法对数值列表进行排序比较简单,但是对字符串列表进行排序是,采用的规则是先对大写字母进行排序,再对小写字母进行排序。如果想要排序时不区分大小写,则需指定其key参数(key=str.lower)。
    • 使用sort()方法对列表进行排序时,无法准确地处理中文内容,排序的结果与我们常用的按拼音或者笔画顺序排序的结果都不一致。要实现对中文内容的列表排序,还需要重新编写相应的方法对中文内容进行处理,不能直接使用sort()方法。
  • 使用内置的sorted()函数实现

    使用sorted()对列表进行排序后,原列表的元素顺序不变。

    sorted(iterable,key=Node,reverse= False)
    
    grade =[...]
    grade_as1 =sorted(grade)   #升序排列
    grade_as2 =sorted(grade,reverse=False)  #降序排列
    

sort()与sorted()作用基本相同,不同的是sort()会改变原列表的元素顺序,sorted()函数会建立一个原列表的副本,该副本为排序后的列表,不会改变原列表的元素顺序。

4.2.7 列表推导式

使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足需求的列表。

  • 生成指定范围的数值列表
    lsit = [Expression for var in range]
    

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

    var:循环变量

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

    import random  # 导入random 标准库
    randomnumber= [random.randint(10,100) for i in range(10)]
    print("生成10~100的随机数:",randomnumber)
    
  • 根据列表生成满足指定需求的列表
    newlist = [Expression for var in list]
    
    price = [1200,5330, 2988,6200,1998,8888]
    sale = [int(x*0.5) for x in price]
    print("原价格",price)
    print("打五折的价格",sale)
    #原价格 [1200, 5330, 2988, 6200, 1998, 8888]
    #打五折的价格 [600, 2665, 1494, 3100, 999, 4444]
    
  • 从列表中选择符合条件的元素组成新的列表
    newlist = [Expression for var in list if condition]
    
    price = [1200,5330, 2988,6200,1998,8888]
    sale = [x for x in price if x>5000]
    print("原价格",price)
    print("价格高于5000的",sale)
    #原价格 [1200, 5330, 2988, 6200, 1998, 8888]
    #价格高于5000的  [5330, 6200, 8888]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时汾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值