day8-函数基础知识总结

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. 包含关系
    集合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. 求并集
    集合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. 求交集
    集合1 & 集合2 - 使用两集合的公共元素创建一个新的集合
print(set1 & set2)           #     {1, 2, 3, 4, 5, 6}
  1. 求差集
    集合1 - 集合2 -- 使用集合1中除了(1和2共有的部分)集合2的部分以外的元素,创建一个新的集合
print(set2 - set1)   #   {8, 9, 7}
  1. 求补集
    补集 = 并集 - 交集
    集合1 ^ 集合2 - 将俩个集合中除了公共部分以外的元素,创建为一个新的集合
print(set1 ^ set2)   # {8, 9, 7}集合无序

8.4 认识函数

  1. 函数的定义
    定义:
    函数就是对实现某一特定代码段的封装。
    分类:
    函数可以分为python内置函数和自定义函数
    内置函数:python已经声明好了,程序员直接调用的函数。print函数,input函数等。
    max和min函数等。相当于已经造好的机器,程序员只需要知道使用方法。
    自定义函数:程序员自己声明,自己实现功能的函数。可以提供给别人用,也可以自己用。相当于自己设置和创建机器。
  1. 函数的声明
    语法:
    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))
  1. 函数的调用
    (重点)函数在声明时不会执行函数体,只有在调用时才会执行
    语法:
    函数名(实参列表)
    说明:
    函数名 - 必须是已经声明好的函数
    () - 固定写法
    实参列表 - 给形参赋值(需要传递给函数内部的数据)
    目前,形参有多少个,实参就需多少个。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容