8.1 字典相关方法
1.clear
字典.clear() - 清空字典(删除字典中所有的键值对)
dict1 = {'a': 100, 'b': 200 }
dict1.clear()
print(dict1) # {}
2.copy
字典.copy() - 复制字典中所有的键值对产生一个新的字典(浅拷贝)
dict1 = {'a': 100, 'b': 200 }
dict2 = dict1
print(dict2) # {'a': 100, 'b': 200 }
dict1 = {'a': 100, 'b': 200 }
dict2 = dict1.copy() # 这会产生新的地址,改变1不会影响2
print(dict2)
3.fromkeys
通过字典类型来调用,是类方法,静态方法
dict.fromkeys(序列,值) - 以序列中元素作为key,值作为所有key对应的默认值,创建一个字典。
dict3 = dict.fromkeys('abc', 100)
print(dict3) # {'a': 100, 'b': 100, 'c': 100}
4.get
字典.get(key) - 获取key对应的值,如果key不存在,返回None。
字典.get(key, 值1) - 获取key对应的值,如果key不存在,返回值1。
值1可以是任意类型。
print(dict3.get('d')) # None
print(dict3.get('d', 0)) # 0
5.keys,values,items
字典.keys() - 获取字典所有的key(返回一个序列,序列中元素就是字典的key)
字典.values() - 获取字典所有的值(返回一个序列,序列中元素就是字典的value)
字典.items() - 获取字典所有的键值对(返回一个序列,序列中元素是元组,元组中
元素有两个,分别为key和value)
dict1 = {'a': 100, 'b': 200, 'c':120}
keys = dict1.keys()
print(keys, type(keys)) # dict_keys(['a', 'b', 'c']) <class 'dict_keys'>
#只是一个单纯的序列,可遍历(for i in keys:),但若要单独取则需要先转换成列表或元组等。
for i in keys:
print(i) # a b c
print(dict1.items()) # dict_items([('a', 100), ('b', 200), ('c', 120)])生成式
6.setdefault(key, value)
字典.setdefault(key, value) - 给字典添加键值对,如果字典中已存在key则不会修改相应的值。
dict1 = {'a': 100, 'b': 200, 'c':120}
dict1.setdefault('a', 300)
print(dict1) # {'a': 100, 'b': 200, 'c': 120}
dict1.setdefault('d', 300)
print(dict1) # {'a': 100, 'b': 200, 'c': 120, 'd': 300}
8.2 集合基本操作
1.什么是集合(set)
集合是python内置的一个容器类数据类型,是可变、无序的
字面量 - 使用{}括起来,里面有多个元素,多个元素之间用逗号隔开{1, 2, 3}
元素 - 不是键值对;必须是不可变的,而且是唯一的。可用于列表去重!!
set1 = {1, 'hello', (1, 2, 3)}
#set2 = {1, 'hello', [1, 2, 3]} # TypeError: unhashable type: 'list'
set3 = {1, 'hello', (1, 2, 3), True, 1}
print(set3) # {'hello', 1, (1, 2, 3)}
set4 = {}
print(type(set4)) # <class 'dict'>
set4 = set() # 创建一个空的集合
print(type(set4)) # <class 'set'>
2.集合的增删改查
a.查(获取集合元素)
不能直接获取集合中单独的某个元素,只能遍历。
for item in set3:
print(item) #1 hello (1, 2, 3)
b.增(添加元素)
集合.add(元素) - 将指定的元素添加到集合中
集合.update(序列) - 将序列中的每个元素添加到集合中
set3.add(333)
set3.update([222, 3333, 2323])
c.删(集合中只有remove)
集合.remove(元素) - 删除集合中指定的元素
set3.remove(333)
d.集合不能修改元素的值,无序的拿不到,只能增加
set(序列) - 将序列转换成集合
8.3 数学集合运算
python中的集合支持数学相关的集合运算
- 包含关系
集合1 >= 集合2 判断集合1中是否包含集合2(判断集合2是否是1的子集)
集合1 <= 集合2 判断集合2中是否包含集合1(判断集合1是否是2的子集)
print({1, 2, 3} >= {1, 2}) # True
print({1, 2, 3} >= {1, 10}) # False
- 求并集
集合1 | 集合2 - 将两个集合中的元素合并在一起产生一个新的集合
set1 = {1, 2, 3, 4, 5, 6}
set2 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
- 求交集
集合1 & 集合2 - 使用两集合的公共元素创建一个新的集合
print(set1 & set2) # {1, 2, 3, 4, 5, 6}
- 求差集
集合1 - 集合2 -- 使用集合1中除了(1和2共有的部分)集合2的部分以外的元素,创建一个新的集合
print(set2 - set1) # {8, 9, 7}
- 求补集
补集 = 并集 - 交集
集合1 ^ 集合2 - 将俩个集合中除了公共部分以外的元素,创建为一个新的集合
print(set1 ^ set2) # {8, 9, 7}集合无序
8.4 认识函数
- 函数的定义
定义:
函数就是对实现某一特定代码段的封装。
分类:
函数可以分为python内置函数和自定义函数
内置函数:python已经声明好了,程序员直接调用的函数。print函数,input函数等。
max和min函数等。相当于已经造好的机器,程序员只需要知道使用方法。
自定义函数:程序员自己声明,自己实现功能的函数。可以提供给别人用,也可以自己用。相当于自己设置和创建机器。
- 函数的声明
语法:
def 函数名(形参列表):
"""'函数说明文档'"""
函数体
说明:
def - python中声明函数的关键字
函数名 - 自己命名;要求:标识符,不能是关键字。
PEP8规范(名字中的字母小写,多个单词之间用下划线隔开),见名知意(
看到函数名,大概知道函数的功能)
() - 固定写法
形参列表 - 一个或多个参数也可以没有参数。
作用:从函数外部向函数内部传递数据
: - 固定写法
函数说明文档 - 用来对函数功能进行说明的注释。需要用3个”引起来。
函数体 - 实现函数功能的代码段
初学者函数声明步骤:
1.确定函数功能
2.根据函数功能,确定函数名
3.确定参数,看实现函数功能需不需要向内部传递额外的数据。需要几个数据就需要几
个参数。
4.实现函数功能
5.确定返回值
前后两行。
# 声明一个函数求两数和,并打印
def add(num1, num2):
"""求两个数的和"""
return num1 + num2
print(add(4, 5))
# 声明一个函数,打印10个‘*’
def print_star():
print('*' * 10)
print_star()
# 声明一个函数,求1+2+3+。。。+n
def sum1(num1):
sum2 = 0
for i in range(1, num1 + 1):
sum2 += i
return sum2
print(sum1(10))
- 函数的调用
(重点)函数在声明时不会执行函数体,只有在调用时才会执行
语法:
函数名(实参列表)
说明:
函数名 - 必须是已经声明好的函数
() - 固定写法
实参列表 - 给形参赋值(需要传递给函数内部的数据)
目前,形参有多少个,实参就需多少个。
网友评论