Python 元组、集合、字典

元组

前面介绍过 Python 的列表概念。列表可以存储不同类型元素的集合,并将它们线性地组织在一起。然而,当我们想要存储的元素数量固定的情况下,虽说列表也能胜任,但未免会导致效率低下。
元组(Tuple) 与列表类似。两者之间的区别在于:元组不能更改,列表可以。也就是说,一旦被分配,就不能从元组中添加、更改或删除元素
元组 就是一种可以提高存储固定量元素的效率的数据结构。与列表相比,元组有很多优点:

  • 通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类型
  • 由于元组不可变,所以遍历元组比列表要快(较小的性能提升)
  • 元组可以用作字典的 关键字,而列表不行。因为字典的关键字必须是不可变的,元组本身就是不可变的
  • 如果数据不需要更改,将其作为元组来实现,可以确保“写保护”
  • 元组可以被用在字符串格式化中

接下来是几个使用元组的例子:

  •   t1 = ()
      t2 = (1, 3, 5)
      # 相当于 list [2, 4, 6, 8]
      t3 = tuple([2 * x for x in range(1, 5)])
      # 相当于 list ['a', 'b', 'c', 'd']
      t4 = tuple("abcd")
    
  • 以上的元组一旦确立了其中的元素就不能再进行增删改,只能进行查询,可以沿用列表的中括号下标查询其中的元素
  • 除此以外,还可以对元组的元素进行遍历、使用数学函数甚至进行运算等:
  •   tuple1 = ("green", "red", "blue")
      print(tuple1)
    
      tuple2 = tuple([7, 1, 2, 23, 4, 5])
      print(tuple2)
    
      print("length is", len(tuple2))
      print("max is", max(tuple2))
      print("min is", min(tuple2))
      print("sum is", sum(tuple2))
    
      print("The first element is", tuple2[0])
    
      tuple3 = tuple1 + tuple2
      print(tuple3)
    
      tuple3 = 2 * tuple1
      print(tuple3)
    
      print(tuple2[2: 4])
      print(tuple1[-1])
    
      # 这一行的意思是输出 2 是否是该元组中的一个元素
      print(2 in tuple2)
    
      for v in tuple1:
          print(v, end = ' ')
      print()
    
      # 支持元组与列表的相互转换
      list1 = list(tuple2)
      list1.sort()
      tuple4 = tuple(list1)
      tuple5 = tuple(list1)
    
      print(tuple4)
      print(tuple4 == tuple5)
    

集合

集合与列表的不同在于,集合内的元素是不重复且不按特定顺序进行排列的
可以通过将元素用一对 花括号({}) 括起来以创建一个元素集合。集合中的元素用逗号分隔。可以创建一个空集,或者从一个列表或一个元组创建一个集合,如下面的例子所示:

    s1 = set()
    s2 = {1, 3, 5}
    # 下面这行意味着列表、元组、集合也可以相互转换,需要使用对应的初始化方法
    s3 = set((1, 3, 5))

操作和访问集合

  • 除了前面讲过的一些数学函数可以对集合进行操作外,向集合添加或删除一个元素可以分别使用 add()remove() 方法:
  •   s1 = {1, 2, 4}
      s1.add(6)
      s1.remove(4)
      print(s1)
    

子集和超集

  • 主要可以通过 issubset()issuperset() 方法来判断一个集合是否为另一个集合的子集或超集:
  •   s1.issubset(s2)
      s2.issuperset(s1)
    

相等性测试

  • 可以使用运算符 ==!= 对集合的相等性进行判定:
  •   s1 = {1, 2, 4}
      s2 = {1, 4, 2}
    
      print(s1 == s2)
      print(s1 != s2)
    

集合运算

  • 集合的运算主要有 并、交、差、对称差,分别用 |、&、-、^ 运算符表示,但也可以用 union()、intersection()、difference()、symmetric_difference() 方法实现:
  •   set1 = {"green", "red", "blue", "red"}
      set2 = set([7, 1, 2, 23, 2, 4, 5])
    
      print("Is red in set1?", "red" in set1)
      print("length is", len(set2))
      print("max is", max(set2))
      print("min is", min(set2))
      print("sum is", sum(set2))
    
      set3 = set1 | {"green", "yellow"}
      set3 = set1 - {"green", "yellow"}
      set3 = set1 & {"green", "yellow"}
      set3 = set1 ^ {"green", "yellow"}
    
      list1 = list(set2)
      print(set1 == {"green" ,"red", "blue"})
    
      set1.add("yellow")
      print(set1)
    

字典

一个字典是按照 关键字 存储值的集合,这些关键字很像下标运算符。
在一个列表中,下标是整数;在一个字典中,关键字必须是一个 可哈希对象。一个字典不能包含有重复的关键字。每个关键字都对应着一个值。一个关键字和它对应的值形成存储在字典中的一个条目(输入域),这种数据结构被称为“字典”。因为它与词典很类似,在这里,单词就相当于关键字而这些单词的详细定义就是相应的值。
在这里插入图片描述

创建字典

  • 字典的创建可以使用花括号(注意,空花括号默认为空字典,空集合应为 set()),花括号里面的元素都由 关键字: 值 构成:
  •   students = {}
      students = {"111-23-2323": "John", "22-34-3434": "Peter"}
    

添加、修改、获取值

  • 添加一个条目到字典中,直接对下标关键字赋值即可:dictionary[key] = value,若关键字已存在,直接替换旧值
  • 删除条目的语法为:del dictionary[key]
  • 与此同时,可以对字典中的关键字进行遍历,获取所有元素值

len 函数

  • len(dictionary) 返回字典中所有元素的个数

检测关键字

  • 检测关键字是否在字典中,使用 in 语法

相等性检测

  • 字典是有序的,使用 ==、!= 判定相等或不相等时,会考虑关键字-值的相等以及出现顺序的一致

字典方法

  • 以下是其他字典对象的方法及其作用:
  • 方法名作用
    keys()返回一个关键字序列
    values()返回一个值序列
    items()返回一个元组序列,每个元组都是一个条目的(键,值)
    clear()删除所有条目
    get(key)返回这个关键字对应的值
    pop(key)删除这个关键字对应的条目并返回它的值
    popitem(key)返回一个随机选择的键值对作为元组并删除这个被选择的条目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值