Python基础:数据容器(一)

部署运行你感兴趣的模型镜像

        数据容器是一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。Python 提供了四种主要的内置容器,列表、元组、集合、字典。

1.列表(list)

(1)列表的定义:列表中存储元素的数据类型不受限制,甚至元素也可以是列表,这样就定义了嵌套列表。

        # 定义空列表
        list = []
        list = list()
        # 列表中的每一个数据,称为元素
        list = [1, 2, 3]
        # 列表的嵌套
        list = [[1, 2, 3], [4, 5, 6]]

# 数据容器

# 列表(list)

# 定义一个列表
name_list = ["张三", "李四", "王五"]
print(name_list)
print(type(name_list))

# 列表中存储元素的数据类型不受限制
user_list = ["张三", 18, 178.2, True]
print(user_list)
print(type(user_list))

# 定义一个嵌套列表
num_list = [[1, 2, 3], [4, 5, 6]]
print(num_list)
print(type(num_list))

(2)列表的下标(索引):列表中的每一个元素,都有其对应的位置值,称为索引。
                                     从左向右,从0开始,依次递增。
                                     从右向左,从-1开始,依次递减。
                                     使用下标索引即可取得相应的元素

        语法:列表[下标索引]
                   # 嵌套列表下标(索引)
                   列表[下标索引][下标索引]

        注意:下标索引的取值范围,超出范围无法取出元素并且会报错

 列表的下标(索引)

# 通过下标(索引)取出对应位置的元素
name_list = ["张三", "李四", "王五"]
# 从左到右,从0开始,依次递增
print(name_list[0])
print(name_list[1])
print(name_list[2])
# 错误用法 列表中没有第四个元素,下标超出范围 print(name_list[3])

# 反向索引:从右到左,从-1开始,依次递减
print(name_list[-3])
print(name_list[-2])
print(name_list[-1])

# 取出嵌套列表的元素
num_list = [[1, 2, 3], [4, 5, 6]]
# 从左到右依次取出
print(num_list[0][0])
print(num_list[0][1])
print(num_list[0][2])
print(num_list[1][0])
print(num_list[1][1])
print(num_list[1][2])
# 1
print(num_list[-2][0])
# 1
print(num_list[-2][-3])

    (3)列表的常用操作(方法)

            1)查询

            a.查询某元素的下标:查找指定元素在列表中的下标,如果找不到,报错ValueError
               语法:列表.index(元素)

    # 列表的常用操作
    
    # 查询
    # 查询某元素的下标
    name_list = ["张三", "李四", "王五"]
    
    # 查询元素"张三"在列表中的索引值,查询结果是正向索引值
    index = name_list.index("张三")
    print(f"\"张三\"在列表中的下标索引值是:{index}")
    
    # 错误用法 "曹仁"不在列表中,会报错
    # index = name_list.index("曹仁")
    # print(f"\"曹仁\"在列表中的下标索引值是:{index}")
    

            b.统计某元素在列表中的数量
               语法:列表.count(元素)

    # 查询
    
    # 统计某元素在列表中的数量
    name_list = ["张三", "李四", "王五", "张三", "张三"]
    count = name_list.count("张三")
    print(f"列表中\"张三\"元素的个数是:{count}")
    

            c.统计列表中有多少个元素
               语法:len(列表)

    # 查询
    
    # 统计列表中有多少个元素
    name_list = ["张三", "李四", "王五", "张三", "张三"]
    count = len(name_list)
    print(f"列表中的元素的个数是:{count}")
    
    

            2)插入

            a.插入元素:在指定的下标位置,插入指定的元素
               语法:列表.insert(下标, 元素)

    # 插入元素
    name_list = ["张三", "李四", "王五"]
    
    # 在"张三"和"李四"中间插入"曹仁"这个元素
    name_list.insert(1, "曹仁")
    print(f"插入元素后的列表为:{name_list}")
    
    
    name_list = ["张三", "李四", "王五"]
    # 在"王五"后面插入"曹仁"这个元素,相当于在列表追加元素"曹仁"
    name_list.insert(3, "曹仁")
    print(f"插入元素后的列表为:{name_list}")

            b.追加元素:将指定元素,追加到列表的尾部
               语法:列表.append(元素)

    # 追加元素
    name_list = ["张三", "李四", "王五"]
    # 在列表尾部追加元素"曹仁"
    name_list.append("曹仁")
    print(f"追加元素后的列表为:{name_list}")

            c.追加一批元素,将其他数据容器的内容取出,依次追加到列表尾部
               语法:列表.extend(其他数据容器)

    # 追加一批元素
    name_list = ["张三", "李四", "王五"]
    name_list2 = ["曹仁", "李彪"]
    name_list.extend(name_list2)
    print(f"追加元素后的列表为:{name_list}")
    

            3)修改

            修改特定位置(索引)的元素值
            语法:列表[下标] = 值

    # 修改特定位置(索引)的元素值
    
    name_list = ["张三", "李四", "王五"]
    # 修改第二个元素的值为"曹仁"
    name_list[1] = "曹仁"
    print(f"列表中的第二个元素值是:{name_list[1]}")
    
    # 错误用法:不能修改超出下标范围元素的值,即不能通过这种方法插入元素
    # name_list[3] = "曹仁"
    # print(f"列表中的第四个元素值是:{name_list[3]}")
    

            4)删除

            a.删除元素
            语法:del 列表[下标]
            语法:列表.pop(下标) 删除元素的同时的到元素值

    # 删除元素
    name_list = ["张三", "李四", "王五"]
    # 删除"张三"方式一:
    del name_list[0]
    print(f"删除元素后的列表为:{name_list}")
    
    
    name_list = ["张三", "李四", "王五"]
    # 删除"张三"方式二:删除元素的同时的到元素值
    element = name_list.pop(0)
    print(f"删除元素后的列表为:{name_list}, 通过pop方法取出的元素是{element}")
    

            b.删除某元素在列表中的第一个匹配项
            语法:列表.remove(元素)

    # 删除某元素在列表中的第一个匹配项
    name_list = ["张三", "李四", "王五", "张三", "张三"]
    name_list.remove("张三")
    print(f"删除元素后的列表为:{name_list}")
    

            c.清空列表
            语法:列表.clear()

    # 清空列表
    name_list = ["张三", "李四", "王五"]
    name_list.clear()
    print(f"清空列表后的列表为:{name_list}")
    

    (4)列表的遍历

            遍历(迭代):将容器内的元素依次取出进行处理

            1)while循环

    # 列表的遍历
    
    # while循环
    
    name_list = ["张三","李四","王五"]
    
    # 定义一个变量,标记列表的下标
    index = 0
    
    # 循环条件:下标索引变量 < 列表的元素数量len(name_list)
    while index < len(name_list):
        element = name_list[index]
        print(f"列表的元素:{element}")
        # 每次循环下标索引变量 + 1
        index += 1
    

            2)for循环

    # 列表的遍历
    
    # for循环
    name_list = ["张三","李四","王五"]
    for element in name_list:
        print(f"列表的元素:{element}")
    

    (5)列表的特点

    • 可以容纳多个元素

    • 可以容纳不同类型的元素

    • 数据是有序存储的(下标索引)

    • 允许重复数据存在

    • 可以修改(增加或删除元素)

    2.元组(tuple)

    (1)元组的定义:元组同列表一样,都是可以封装多个、不同类型的元素在内。但最大的不同点在于:元组一旦定义完成,就不可修改。

            # 定义空元组
            tuple = ()
            tuple = tuple()
            # 元组中的每一个数据,称为元素
            tuple = (1, 2, 3)        
            # 定义单个元素的元组
            tuple = ("hello", )
            # 元组的嵌套
            tuple = ((1, 2, 3), (4, 5, 6))

    # 元组(tuple)
    
    # 元组的定义
    name_tuple = ("张三", "李四", "王五")
    print(name_tuple)
    print(type(name_tuple))
    
    user_tuple = ("张三", 18, 178.5, False)
    print(user_tuple)
    print(type(user_tuple))
    
    # 定义单个元素的元组,一定要在后面写上一个单独的逗号
    single_tuple = ("hello", )
    # 错误写法
    # single_tuple = ("hello")
    print(single_tuple)
    print(type(single_tuple))
    
    # 元组的嵌套
    num_tuple = ((1, 2, 3), (4, 5, 6))
    print(num_tuple)
    print(type(num_tuple))
    

    (2)元组的下标(索引):同列表的下标索引

    # 通过下标(索引)取出对应位置的元素
    name_tuple = ("张三", "李四", "王五")
    print(name_tuple[0])
    print(name_tuple[1])
    print(name_tuple[2])
    # 错误用法 列表中没有第四个元素,下标超出范围 print(name_tuple[3])
    
    # 反向索引:从右到左,从-1开始,依次递减
    print(name_tuple[-3])
    print(name_tuple[-2])
    print(name_tuple[-1])
    
    # 取出嵌套元组的元素
    num_tuple = ((1, 2, 3), (4, 5, 6))
    # 从左到右依次取出
    print(num_tuple[0][0])
    print(num_tuple[0][1])
    print(num_tuple[0][2])
    print(num_tuple[1][0])
    print(num_tuple[1][1])
    print(num_tuple[1][2])
    # 6
    print(num_tuple[-1][2])
    # 1
    print(num_tuple[-2][-3])
    

    (3)元组的常用操作(方法)

            1)查询

            a.查询某元素的下标:查找指定元素在列表中的下标,如果找不到,报错ValueError
               语法:列表.index(元素)

    # 元组的常见操作
    
    # 查询某元素的下标
    name_tuple = ("张三", "李四", "王五")
    index = name_tuple.index("李四")
    print(f"\"李四\"元素在元组中的下标索引是:{index}")
    
    

            b.统计某元素在列表中的数量
               语法:列表.count(元素)

    #统计某元素在元组中的数量
    name_tuple = ("张三", "李四", "王五", "李四")
    count = name_tuple.count("李四")
    print(f"\"李四\"元素在元组中的数量是:{count}")
    

             c.统计列表中有多少个元素
               语法:len(列表)

    # 统计元组中有多少个元素
    name_tuple = ("张三", "李四", "王五", "李四")
    count = len(name_tuple)
    print(f"元组中的元素数量是:{count}")
    

            2)修改:在元组内定义一个列表,可以修改列表的内容

    name_tuple = ("张三","李四","王五")
    # 修改元组内容,报错
    # name_tuple[1] = "曹仁"
    
    
    # 在元组内定义一个列表,尝试修改列表的内容
    t1 = ("张三", ["李四", "王五"])
    t1[1][0] = "曹仁"
    print(f"修改后元组的内容:{t1}")

      (4)元组的遍历

              1)while循环

      # 元组的遍历
      
      # while循环
      name_tuple = ("张三", "李四", "王五")
      # 定义一个变量,标记列表的下标
      index = 0
      # 循环条件:下标索引变量 < 元组的元素数量len(name_tuple)
      while index < len(name_tuple):
          element = name_tuple[index]
          print(f"元组的元素:{element}")
          # 每次循环下标索引变量 + 1
          index += 1

              2)for循环

      # 元组的遍历
      
      # for循环
      name_tuple = ("张三","李四","王五")
      for element in name_tuple:
          print(f"元组的元素:{element}")
      

      (5)元组的特点

      • 可以容纳多个元素

      • 可以容纳不同类型的元素

      • 数据是有序存储的(下标索引)

      • 允许重复数据存在

      • 不可以修改

      3.字符串(string)

      (1)从容器角度看字符串

               字符串是字符的容器,一个字符串可以存放任意数量的字符。

               同元组一样,字符串是一个无法修改的数据容器。

      (2)字符串的下标索引:同列表、元组的下标索引

      # 字符串
      # 通过下标(索引)取出对应位置的元素
      name = "Alice"
      print(name[0])
      print(name[-5])
      
      # 字符串无法修改
      # name = "Alice"
      # name[0] = a
      # print(name)
      

      (3)字符串的常见操作

              1)查询

              a.查询某字符串的下标
              语法:字符串.index(元素)

      # 查询某字符串的下标
      name = "Alice"
      index = name.index("c")
      print(f"字符串c在字符串中的列表索引值是:{index}")
      
      word = "hello world"
      index = word.index("o")
      print(f"字符串o在字符串中的列表索引值是:{index}")
      
      # 查找字符串的下标:返回字符串的第一个元素在字符串中的下标索引值
      index1 = word.index("hello")
      print(f"字符串\"hello\"在字符串中的列表索引值是:{index1}")
      index2 = word.index("world")
      print(f"字符串\"world\"在字符串中的列表索引值是:{index2}")
      

              b.统计某字符串在字符串中的出现次数
              语法:字符串.count(元素)

      # 统计某字符串在字符串中的出现次数
      word = "hello world, hello python"
      count = word.count("o")
      print(f"字符串\"o\"在字符串中的出现次数是:{count}")
      
      word = "hello world, hello python"
      count = word.count("hello")
      print(f"字符串\"hello\"在字符串中的出现次数是:{count}")
      

              c.统计字符串的长度
              语法:len(字符串)

      # 统计字符串的长度
      word = "hello world, hello python"
      count = len(word)
      print(f"字符串的长度是:{count}")
      

              2)字符串的替换
                    语法:字符串.replace(字符串1,字符串2) 将字符串的全部字符串1替换为字符串2
                    注意:不是修改字符串本身,而是得到了一个新的字符串

      # 字符串的替换
      name = "Alice"
      name_replace = name.replace(name, "Tom")
      print(f"替换后的字符串为:{name_replace}")
      
      word = "hello world, hello python"
      word_replace = word.replace("hello" ,"hi")
      print(f"替换后的字符串为:{word_replace}")
      
      word = "hello world, hello python"
      word_replace = word.replace("e" ,"o")
      print(f"替换后的字符串为:{word_replace}")
      

              3)字符串的分割
                    语法:字符串.split(分隔符字符串) 按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中。
                    注意:字符串本身不变,而是得到了一个列表对象

      # 字符串的分割
      word = "hello world, hello python"
      # 列表对象word_split
      word_split = word.split(",")
      print(f"将字符串分割后的得到的列表为:{word_split}, 其类型是{type(word_split)}")
      

              4)字符串的规整操作

                  a.去前后空格
                  语法:字符串.strip()

      # 字符串的规整操作
      # 不传入参数,去前后空格
      word = "  hello world, hello python  "
      word_strip = word.strip()
      print(f"规整后的字符串为:{word_strip}")
      

                  b.去前后指定字符串
                  语法:字符串.strip(指定字符串)

      # 字符串的规整操作
      # 传入参数
      word = "9hello world, hello python9"
      word_strip = word.strip("9")
      print(f"规整后的字符串为:{word_strip}")
      word = "12hello world, hello python21"
      word_strip = word.strip("12")
      print(f"规整后的字符串为:{word_strip}")
      

      (4)字符串的遍历

              1)while循环

      # 字符串的遍历
      # while循环
      name = "Alice"
      index = 0
      while index < len(name):
          element = name[index]
          print(element)
          index += 1
      

              2)for循环

      # 字符串的遍历
      # for循环
      name = "Alice"
      for i in name:
          print(i)
      

      (5)字符串的特点

      • 长度任意(取决于内存大小)

      • 只可以存储字符串

      • 支持下标索引

      • 允许重复字符串存在

      • 不可以修改

      4.序列

      (1)序列的定义

              内容连续、有序,可使用下标索引的一类数据容器。

              列表、元组、字符串,均可以视为序列。

      (2)序列的切片操作:

              a.切片操作:从一个序列中,取出一个子序列

              b.语法:序列[起始下标:结束下标:步长] 从序列中指定位置开始,依次取出元素,到指定位置结束,得到一个新序列。
                      起始下标:可以为空(表示从头开始)
                      结束下标(不含):可以为空(表示截取到结尾)
                      步长:表示依次取元素的间隔。步长为 n表示,每次跳过 n-1个元素取。步长为负数,反向取

              c.注意:此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)

              列表的切片

      # 数据容器(序列)的切片
      
      # 列表的切片
      my_list = [0, 1, 2, 3, 4, 5]
      new_list = my_list[0:3:1]
      print(f"切片后的列表为:{new_list}")
      
      # 起始下标默认是0,步长默认是1
      new_list = my_list[:3]
      print(f"切片后的列表为:{new_list}")
      
      # 起始下标默认是0,步长默认是1
      new_list = my_list[:3:]
      print(f"切片后的列表为:{new_list}")
      
      # 结束下标默认截取到结尾,步长默认是1
      new_list = my_list[3:]
      print(f"切片后的列表为:{new_list}")
      
      # 起始下标默认是0,结束下标默认截取到结尾,步长默认是1
      new_list = my_list[:]
      print(f"切片后的列表为:{new_list}")
      
      # 步长为负数,反向取
      # 结束下标默认截取到结尾
      new_list = my_list[-4::-1]
      print(f"切片后的列表为:{new_list}")
      
      # 步长默认是1
      new_list = my_list[-4:-1]
      print(f"切片后的列表为:{new_list}")
      
      # 起始下标默认是-1
      new_list = my_list[:-4:-1]
      print(f"切片后的列表为:{new_list}")
      
      # 从3开始,到1结束,步长是-1
      new_list = my_list[3:1:-1]
      print(f"切片后的列表为:{new_list}")
      
      

              元组的切片

      # 数据容器(序列)的切片
      # 元组的切片
      my_tuple = (0, 1, 2, 3, 4, 5)
      # 从1开始,到3结束,步长是2
      new_tuple = my_tuple[1:3:2]
      print(f"切片后的元组为:{new_tuple}")
      # 从头开始,到尾结束,步长是-2
      new_tuple = my_tuple[::-2]
      print(f"切片后的元组为:{new_tuple}")
      

              字符串的切片

      # 数据容器(序列)的切片
      # 字符串的切片
      my_str = "012345"
      # 从头开始,到3结束,步长是1
      new_str = my_str[:3:]
      print(f"切片后的字符串为:{new_str}")
      
      # 从头开始,到尾结束,步长是1
      new_str = my_str[::-1]
      print(f"切片后的字符串为:{new_str}")
      

      您可能感兴趣的与本文相关的镜像

      Python3.11

      Python3.11

      Conda
      Python

      Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

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

      余额充值