美文网首页
12、列表

12、列表

作者: 唯老 | 来源:发表于2019-03-05 18:30 被阅读58次

    一、概要

    到目前为止,我们如果想保存一些数据,只能通过变量。但是如果遇到较多的数据要保存,这个时候时候用变量就变的不太现实。我们需要能够保存大量数据的类似变量的东东,这种东东就是数据结构(Data Structures)。

    数据结构,它们只是一种结构,能够将一些数据聚合在一起的结构。换句话说,它们是用来存储一系列相关数据的容器。

    python 提供了 4 种内置数据结构:List(列表)、Tuple(元组)Dictionary(字典)、Set(集合)

    严格来说,字符串也是一种数据结构,因为他把字符组织在了一起。

    二、列表简介

    listpython 中一般把它翻译为列表.

    list 是处理一组有序数据的数据结构,即你可以在一个列表中存储一个序列的数据,

    list 是 python 中用途最广的一种数据结构。

    list 可以存储多个数据,这些数据用 [ ] 包裹,各个数据之间用 , 分割。

    list中的元素可以是任意类型的,但是实际使用的时,一个list 中一般只存储一种数据类型的数据。

    list 中可以存储的元素是有顺序的,且允许重复。

    list 中的元素也可以更改。

    三、如何定义

    1、语法结构

    [元素1, 元素2, 元素3, ...]
    

    2、结构图

    image

    3、说明

    • 列表是写在⽅括号[] 之间
    • ⽤**逗号 ** , 分隔开的元素列表
    • 列表中元素的类型可以是不相同
    1. 示例代码
      list = ["小花","小明",18,5000.00,"武汉市高新区"]
      

    四、获取元素

    1、通过索引

    1. 语法格式
      list[index]
      
    2. 参数说明
      • index
        表示列表中元素的下标(或者理解为位置,从0开始。到长度-1。不能越界)
    3. 示例代码
      info_list = ["小花", "小明", 18, 5000.00, "武汉市高新区"]
      print(info_list[0]) #输出 '小花'
      print(info_list[1]) #输出 '小明'
      print(info_list[-1]) #输出 "武汉市高新区"  倒数第一个 
      print(info_list[6]) # 输出错误 
      """
      Traceback (most recent call last):
        File "list.py", line 6, in <module>
          print(info_list[6])
      IndexError: list index out of range
      """
      

    2、通过for循环

    1. 语法格式
      for 变量名 in 列表:
         print(变量名)  # 就是打印输出列表中的每一个元素
      
    2. 示例代码
      info_list = ["小花", 18, 5000.00, "武汉市高新区"]
      for item in info_list:
         print(item)
      小花
      18
      5000.0
      武汉市高新区   
      

    3、通过whille

    1. 语法格式
      index = 0
      while index < len(列表) :
          #通过索引获取列表的中的元素
          print(列表[index])
         index +=1
      
    2. 示例代码
      info_list = ["小花",18,5000.00,"武汉市高新区"]
      index = 0
      while index < len(列表):
         print(info_list[index])
         index += 1
      

    4、通过切片

    1. 语法格式
      list(eg,end,delta)
      
    2. 说明
      截取部分元素
    3. 参数
      • eg(起始下标)
      • end(终止下标)
      • delta(变化量)
    4. 返回值
      返回一个所有截取的值,生成一个新的列表,不影响原来的列表
    5. 示例代码
      num_list = [1,2,3,4,5,6,7,8,9]
      print(num_list[0:3]) #截取第一位到第三位的元素 输出结果 [1, 2, 3]
      print (num_list[:]) #截取列表的全部  输出结果[1,2,3,4,5,6,7,8,9]
      print (num_list[0:3]) #截取列表的全部 输出结果[1, 2, 3]
      print (num_list[6:]) #截取第七个元素到结尾  输出结果[7, 8, 9]
      print (num_list[:-3]) #截取从头开始到倒数第三个元素之前 输出结果[1, 2, 3, 4, 5, 6]
      print (num_list[2]) #截取第三个元素 输出结果[3]
      print (num_list[-1]) #截取倒数第一个元素 输出结果[9]
      print (num_list[-3:-1]) #截取倒数第三位与倒数第一位之前的元素 输出结果[7, 8]
      print (num_list[-3:]) #截取倒数第三位到结尾 输出结果[7, 8, 9]
      print (num_list[:-5:-3])#逆序截取 输出结果[9, 6]
      
      注意:
      ​ 所有的切片操作都是返回一个新的 list ,所以我们可以通过切片非常轻松的 copy 一个list

    五、添加元素

    1、append

    1. 语法格式
      list.append(obj)
      
    2. 说明
      list 的末尾添加元素,参数obj
    3. 参数
      要添加的对象
    4. 返回值
      无返回值,修改原来的列表
    5. 示例代码
      nums = [10, 20, 40, 30, 25]
      nums.append(1000)
      print(nums)
      

    2、insert

    1. 语法格式
      list.insert(index, obj)
      
    2. 说明
      把元素 ele 插入到指定的 index 位置。原来的元素会自动右移动
    3. 参数
      • index -- 对象 obj 需要插入的索引位置。
      • obj -- 要插入列表中的对象
    4. 返回值
      没有返回值,修改原来的列表
    5. 示例代码
      nums = [10, 20, 40, 30, 25]
      nums.insert(2, 2000)
      print(nums)
      

    3、extend

    1. 语法格式
      list.extend(seq)
      
    2. 说明
      用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    3. 参数
      元素列表
    4. 返回值
      没有返回值,但会在已存在的列表中添加新的列表内容。
    5. 示例代码
      it = ['Python', 'Java', 'JavaScript']
      it2 = ['H5','Androi','IOS']
      it.extend(it2)
      print(it)
      ['Python', 'Java', 'JavaScript', 'H5', 'Androi', 'IOS']
      

    六、删除元素

    5.1、del

    1. 语法格式
      del 列表[索引]
      
    2. 说明
      可以删除指定下标的值,del关键字本质上是用来将一个变量从内存中删除的。
    3. 返回值
    4. 示例代码
      nums = [10, 20, 40, 30, 25]
      del nums[0]
      print(nums)
      del nums[0:2]
      print(nums)
      

    5.2、pop

    1. 语法格式
      列表.pop([index])
      
    2. 说明
      移除列表中的一个元素(默认最后一个元素),并且返回该删除元素的值
    3. 返回值
      该方法返回从列表中移除的元素对象。
    4. 示例代码
      nums = [10, 20, 40, 30, 25]
      #pop 指定位置删除
      del_value =  nums.pop(0)
      # 删除最后⼀个
      last_value =  nums.pop()
      print(lastvalue)
      

    5.3、remove

    1. 语法格式
      list.remove(obj)
      
    2. 说明
      移除列表中某个值的第一个匹配项 没有会抛异常
    3. 返回值
      无返回值
    4. 示例代码
      nums = [10, 20, 40, 30, 25,10]
      nums.remove(10)#移除指定位置
      print(nums)
      nums.remove(100) #移除不存在的 抛出异常
      [20, 40, 30, 25, 10]
      

    5.4、clear

    1. 语法
      list.clear()
      
    2. 说明
      清空列表中所有的元素
    3. 参数
    4. 返回值
    5. 示例代码
      nums = [10, 20, 40, 30, 25,10]
      nums.clear()
      print(nums)
      []
      nums2 = [10, 20, 40, 30, 25,10,[1,2,3,4]]
      nums2.clear()
      print(nums2)
      []
      

    6、修改元素
    6.1、通过定位到下标直接修改

    1. 语法格式
      list[索引] = 值
      
    2. 示例代码
      cities =['上海','北京','广州']
      cities[0] = '深圳'
      cities[1] = '武汉'
      cities[-1] = '长沙'
      print(cities)
      ['深圳', '武汉', '长沙']
      

    七、其它函数

    1、list

    1. 语法格式
      list( seq )
      
    2. 说明
      将元组转换为列表
    3. 参数
      要转换为列表的元组
    4. 返回值
      返回列表
    5. 示例代码
      str = 'abcdefjg'
      strs = list(str)
      print(strs)
      ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'g']
      

    2、sort

    1. 语法格式
      list.sort([func])
      
    2. 说明
      对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数
    3. 参数
      如果指定了该参数会使用该参数的方法进行排序
    4. 返回值
      该方法没有返回值,但是会对列表的对象进行排序
    5. 注意事项
      python3.0不允许不同数据类型进行排序
    6. 示例代码
      nums = [1,2,1,3,1,5,6,6];
      nums.sort()#默认按照ASCII表先后顺序排序
      #[1, 1, 1, 2, 3, 5, 6, 6]
      print(nums)
      cars = ['Lamborghini','maybach', 'Ferrari',  'Bentley']
      cars.sort(key=len)    # 默认第一原则 字符串从短到长排序,第二原则ASCII表先后顺序
      print(cars) # ['maybach', 'Ferrari', 'Bentley', 'Lamborghini']
      
      # python3.0不允许不同数据类型进行排序
      a = ['x', 'y', 1, 2]
      a.sort()
      """
      TypeError: '<' not supported between instances of 'int' and 'str'
      """
      

    3、count

    1. 语法格式
      list.count(obj)
      
    2. 说明
      统计某个元素在列表中出现的次数
    3. 参数
      • obj
        列表中统计的对象
    4. 返回值
      返回元素在列表中出现的次数
    5. 示例代码
      aList = [1,2,1,3,1,5,6,6];
      count = aList.count(1)
      count = aList.count(6)
      print(count)
      3
      2
      

    八、嵌套列表

    1、说明

    嵌套的意思是,列表中的元素也可以是列表。因为列表中的元素可以是任意类型,所以嵌套也是很容易理解的

    2、示例代码

    nums = [[1, 2], [3, 4], [20, 10]]
    shops = [['mate','牛逼',5000.00],['IPhone','装逼',8000.00],['三星','傻逼',1000.00]]
    

    九、列表推到

    1、简介

    列表推导,有人也叫列表包含。他提供了一种更加简洁的方式去创建列表。

    2、语法格式

    list = [表达式 for 变量 in 列表]
    list = [表达式 for 变量 in 列表 if 条件]
    

    3、说明

    会对序列中的每个 item 执行表达式, 然后把满足条件的值存入到一个新的列表中

    4、示例代码

    1. 生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
      nums = list(range(1, 11))
      print(nums)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      
    2. 求一个数的3次方
      nums = [n**3 for n in range(10)]
      print(nums)
      
    3. 求30以内能被3整除的数
      multiples = [i for i in range(30) if i % 3 is 0]
      print(multiples)
      [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
      
    4. 遍历文件
      #常规代码
      import os
      import os
      files = []
      for file in os.listdir('/Users/zhangwei/work/ipython/demo1'):
          if file.endswith('.py'):
              files.append(file)
      print(files)
      简化
      import os
      files = [file for file in os.listdir('/Users/zhangwei/work/ipython/demo1')
                  if file.endswith(".py")  ]
      #或者
      import os
      files = [file.endswith(".py") for file in os.listdir("/Users/zhangwei/work/ipython/demo1")]  
      
    5. 推导也支持for 的嵌套
      s1 = ["a", "b", "c"]
      s2 = [20, 30]
      s3 = [x + str(y) for x in s1 for y in s2]
      print(s3)
      (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8
      

    1. 模拟多个掷硬币事件
         from random import random
         results = []
         for x in range(10):
             results.append(int(round(random())))
             #简化
             results = [int(round(random())) for x in range(10)]
      

    相关文章

      网友评论

          本文标题:12、列表

          本文链接:https://www.haomeiwen.com/subject/rfnouqtx.html