Python基础-DAY08

本文详细介绍了Python中字典和集合的基本概念、使用方法及高级特性。包括字典的生成、推导式、常用方法及集合的创建、运算、推导式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典推导式 dict comprehesion

作用:

  用可迭代对象生成字典

语法:

  { 键表达式: 值表达式 for 变量 in 可迭代对象 [if真值表达式]}

 

说明:

 先用可迭代对象生成一个对象,同时用变量绑定这个对象

  调用表达式,生成相应的键和对应的值存入于字典中

  重复上述步骤,直到可迭代对象不再提供数据为止

  if部分可以省略,同列表推导式规则相同

 

示例:

  # 生成一个字典,键为数字,值为键的平方

  d = { x : x**2 for x in range(1, 11)}

   

 

字典推导式是可以嵌套的

示例:

  用字符串"ABC",和数字123生成如下字典

  {

   "A1":("A", 1),"A2": ("A", 2), "A3": ("A", 3),

   "B1":("B", 1),"B2": ("B", 2), "B3": ("B", 3),

   "C1":("C", 1),"C2": ("C", 2), "C3": ("C", 3)

  }

  {

    x+str(y): (x, y)

        for x in "ABC"

            for y in range(1, 4)

  }

  以上代码等同于如下代码

d= {}

forx in "ABC":

    for y in range(1, 4):

        d[x+str(y)] =  (x, y)

 

能用于字典的方法:

len()  返回字典长度

max(x)  返回字典中键值最大的键

min(x)  返回字典中键值最小的键

sum(x)  返回字典中所有键的和

any(x)  对键进行真值测试,规则与对序列测试相同

all(x)  对键进行真值测试

 

集合 set

  集合是可变的容器

  集合内的数据对象都是唯一的(不能重复多次的)

  集合是无序的存储结构,集合中的数据没有先后关系.

  集合内的元素必须是不可变对象

  集合是可迭代的.

  集合是相当于只有键,没有值的字典(键则是集合的数据)

 

集合的构造(创建)函数

  set()  创建一个空的集合对象

  set(iterable) 用可迭代对象创建一个新的集合对象

 

集合的表示方法:

   set() 表示空集合

   {元素1, 元素2,...}  表求非空集合

示例:

  s = set()

  s = set("ABC")  # {'C', 'A', 'B'}

  s = set("ABCCBA")  # {'C', 'A', 'B'}

  s = {2, 3, 5}

  s = set([1, 0, 3.14, 1+2J])

  s = set( (True, None, 100, 3.14) )

  s = set( {2:"第一个质数",3:"...", 5:"第3个"})

  s = {1, 2, [3.1, 3.2]}  # 错的,列表不能作为集合的值

 

 

集合的运算:

  交集, 并集, 补集, 子集, 超集

 

描述方法:

  s1 = {1,2,3}

  s2 = {2,3,4}

 

& 生成两个集合的交集

  s3 = s1 & s2  # {2, 3} 共有部分

 

| 生成两个集合的并集  

  s4 = s1 | s2 # {1,2,3,4} 并集

 

- 生成两个集合的补集

  # 生成属于s1,但不属性s2的所有元组的集合

  s5 = s1 - s2 # s5 = {1}

  s6 = s2 - s1 # s6 = {4}

 

^ 生成两个集合的对称补集

  s7 = s1 ^ s2 # {1, 4}

 

> 判断一个集合是另一个集合的超集

< 判断一个集合是另一个集合的子集

  s0 = {2, 3}

  s1 = {1, 2, 3}

  s1 > s0 # True  # 反之为False

  s0 < s1 # True

 

==  != 判断相同/不同

  {1, 2, 3} == {3, 2, 1}  # True

  {1, 2, 3} != {3, 2, 1}  # False

  s1 != s2 # True

 

另:

 >= 超集或相同

 <= 子集或相同

 

in / not in 运算符

  等同于字典, in 用于集合中,判断一个值是否存于集合中.

  not in 与 in的返回值相反

 

字典和集合的优点:

  in/not in 运算符的查找速度快

 

用于集合的函数:

len(x)

max(x)

min(x)

sum(x)

any(x)

all(x)

 

 

集合中常用的方法:

S代表集合

S.add(e)  在集合中添加一个新的元素e,如果元素存在,则不添加

S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError的错误

S.discard(e)从集合中移除一个元素(不会产生错误)

S.clear()  清空集合中所有元素

S.copy()   将集合进行一次浅拷贝

S.pop()从集合s中删除一个随机元素,如果集合为空,则引发KeyError错误

S.update(s2)  用S与s2更新集合S

 

 

集合是可迭代对象:

例:

s= {"abc", 123, (1970, 1, 1)}

forx in s:

    print(x)

集合推导式:

作用:

  生成集合

语法:

  { 表达式 for 变量 in 可迭代对象[if 真值表达式] }

  列表推导式 []

 

示例:

  # 生成1~10的平方的集合

  {x ** 2 for x in range(1, 11)}

 

 

 

固定集合 frozenset

作用:

  创建一个不可变的,无序的,含有唯一元素的集合

    固定集合是集合set的不可变版本

 

固定集合的构造(创建)函数

   frozenset() 创建空的固定集合

   frozenset(iterable)   用可迭代对象创建一个固定集合

例:

  f = frozenset()

  f = frozenset([1,3,5,7,9])

 

运算:

 & 交集

  | 并集

  - 补集

  ^ 对称补集

  in /not in 运算符

  < <= > >= == !=

  (以上运算符操作等同于set中的用法)

 

固定集合的方法:

  相当于集合的全部方法(去掉修改集合的方法)

 

用途:

  固定集合可以作为字典的键

    还可以作为集合的值

 

 

总结:

数据类型:

  不可变的:

    str, tuple, frozenset, int,float, complex, bool, bytes(字节串)

  可变的:

     list, dict, set, bytearray(字节数组)

 

运算符:

  + - * / % // **

  < <= > >= == !=

  is / is not

  in / not in

  and, or, not

  +(正号) -(负号)

  & | ^ << >> ~

 

表达式:

  1

  max(1,2,3,4)

  1 + 2

  max(1,2,3,4) + 100

  [x for x in range(100)]

  条件表达式 x if x >y else y

 

语句:

  表达式语句

    print("hello world")

    "abcd"

  赋值语句:

    a = 1

    a = b = c = 100

    x, y = 100, 200

  if 语句

  while 语句

  for 语句

  break 语句

  continue 语句

  del 语句

  pass 语句


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值