day 8

day08
字典的成员资格判断 in / not in 运算符
  用 in 运算符可以判断一个键是否存在于字典中,如果存在则返回True,否则返回False
not in 返回值与 in 相反

示例:
d = {1: “一”, 2: “二”}
1 in d # True
2 in d # True
2 not in d # False
8 not in d # True
8 in d # False
‘一’ in d # False

列表的 in 运算符和字典的 in 运算符比较:

  1. 列表的in运算符计算时间会因列表中元素个数的增加而增加
    L = [3,7,0,1,4,5,6… 10976] # 大约有十万个
    if 888 in L:
    print(“888在列表里”) # 慢
  2. 字典的in运算符计算时间不会因键值对的个数增加而增加,操作速度快于列表
    d = {3: “三”, 7: “xx”, 0: None, … 10976:None}
    if 888 in d:
    print(“888在字典的键里”) # 快

字典的迭代访问:
容器是可迭代对象,字典只能对键进行迭代访问
d = {‘name’: ‘小张’, ‘birthday’: (2008,8,8)}
for k in d:
print(k)

可以用于字典的内建(built-in)函数:
len(x) 返回字典的键值对的个数
max(x) 返回字典的键的最大值
min(x) 返回字典的键的最小值
sum(x) 返回字典的所有键的和
any(x) 对所有键进行真值测试,有一个为True结果为True
all(x) 对所有键进行真值测试,所有为True才为True

字典的方法:
见:
>>> help(dict)

file: python_base_docs_html/dict_xxxx.html

练习:
输入一个字符串代表星期几(0~6), “0”/'日’代表周日,‘1’/‘一’ 代表周一.
‘2’/‘二’ 代表周二… ‘6’/‘六’ 代表 周六
任意输入字符串,打印这个字符串是否代表星期几,如果不是以上字符打印"字典内没有相应的数据"
(要求将以上数据存于字典中, 键为字符串:'0123456日一二三…六’中的一个,值为星期几或周几)
d = {
‘0’: “星期天”,
‘日’: “星期天”,
‘1’: “星期一”,

}

字典推导式:
作用:
用可迭代对象生成字典
语法:
{键表达式 : 值表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注: []的内容代表可省略

示例:

  # 生成一个字典,键为10以内的数字,值为键的平方
  d = {x : x ** 2 for x in range(10)}

字典推导式的嵌套:
语法同列表推导式嵌套

字典 VS 列表

  1. 都是可变对象
  2. 索引方式不同, 列表用整数索引,字典用键索引
  3. 字典的查找速度可能会快于列表(重要)
  4. 列表的存储是有序的,字典的存储是无序的

集合 set
集合是可变的容器
集合内的数据对象都是唯一的(不能重复多次的)
集合是无序的存储结构,集合中的数据没有先后顺序关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)

创建空的集合:
set()
创建非空的集合:
s = {1, 2, 3, 4}

集合的构造函数 set
set() 创建一个空的集合对象(不能用{}来创建空集合)
set(iterable) 用可迭代对象创建一个新的集合对象

示例:
s = set() # s 为空集合
s = {3,5,7,9}
s = set(“ABC”) # s = {‘A’, ‘B’, ‘C’}
s = set({1:‘1’, 2:“2”, 5:‘5’}) # s = {1,2,5}
s = set(range(1:10:3)) # s = {1,4,7}

集合的运算:
交集, 并集,补集,子集,超集
运算符:
& | - ^ < <= > >= == !=
in / not in

& 生成两个集合的交集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 & s2 # {2, 3}

| 生成两个集合的并集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 | s2 # {1, 2, 3, 4}

  • 生成两个集合的补集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s1 - s2 # {1} #生成属性s1但不属于s2的所有元素的集合

^ 生成两个集合的对称补集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 ^ s2 # {1, 4}

> 判断一个集合是另一个集合的超集
< 判断一个集合是别一个集合的子集
  {1, 2, 3} > {1, 2}  # True
  {2, 3, 1} > {3, 2}  # True
  {2, 3, 4} < {1, 2, 3, 4}  # True

== / != 集合相同和不同
{1, 2, 3} == {3, 2, 1} # True
{1, 2, 3} != {2, 3, 4} # True

in / not in 运算符
in 等同于字典的in, 用于集合中,当某个值存在于集合中,返回True,否则返回False
not in 与 in 返回值相反

集合的 in / not in 运算符的速度快于序列

能用于集合的函数:
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)

集合是可迭代对象

python3 集合中的常用方法:
见:
>>> help(set)
或:
python_base_docs_html/set_???.html

集合推导式
集合推导式是用可迭代对象生成集合的表达式

语法:
{ 表达式 for 变量 in 可迭代对象 [if 真值表达式]}
注: [] 内的内容可省略

示例:
numbers = (1,2,3,2,2,3,3,4,5)
s = {x for x in numbers} # 去除重复的元素

固定集合 frozenset
固定集合是不可变的,无序的,含有不重复元素的集合

作用:
固定集合可以作为字典的键,还可以作为集合的值

创建空的固定集合
fs = frozenset()

创建非空的固定集合:
frozenset(iterable) 用可迭代对象创建新的固定集合
示例:
fz = frozenset([2,3,5,7]) # frozenset({2, 3, 5, 7})

运算:
& 交集
| 并集

  • 补集
    ^ 对称补集
    in /not in 运算
    < <= > >= == !=
    (以上运算 与 set 的运算完全相同)

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

列表 ,字典,集合对象优缺点:

  1. 都为可变
  2. 列表的尾部插入速度比较快,查中间插入和头插数据速度慢
  3. 列表有序
  4. 字典添加,删除,修改速度快于列表
  5. 集合的添加,删除快于列表,且不能存储重复元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值