DataWhale学习计划(第六期):python基础任务3

1. dict字典

a. 定义

如果把列表看做是有序的对象集合,那么就可以把字典当成是无序的集合。它们主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

b. 创建

1、直接创建

方法一:
temp = {} 
temp['name'] = 'xiaoming'
方法二:
temp = dict()
temp['name'] = 'xiaoming'

2、dict() 函数创建

方法一:
temp = dict(name='xiaoming', age=18)
方法二:
temp = dict((('name', 'xiaoming'), ('age', 18)))
方法三:dict() zip() 函数联合使用
temp = dict(zip(['name', 'age'], ['xiaoming', 18]))

c. 字典的方法

1.clear
会清空该字典。

d={1:2}
d.clear
d     

在这里插入图片描述
2.copy
该方法会赋值给一个新的字典,内容和原子典一致,源字典改变,拷贝的字典不变。

d={1:2}
c2=d.copy()
c2
d
d[2]=3
d
c2

在这里插入图片描述
3.fromkeys
这个方法可以创建一个所有值一样的字典,然而并不晓得有什么用,大概还没遇到,源字典不变
d
d.fromkeys([‘w’,‘ws’],[‘2’,‘3’])
d.fromkeys([‘w’,‘ws’],‘2’)
d.fromkeys([‘w’,‘ws’],(2,3))
在这里插入图片描述
4.get
这个方法好,和d[key]的区别在于,若key不存在get方法不会报错,不影响程序运行,尤其是在爬虫的时候,可以避免程序出错。

d
d.get(1)
d.get(3)

在这里插入图片描述
5.items
这个方法会将所有的键值对以元组的形式返回。

d.items()
dict_items([(1,2),(2,3)])
d
for k,v in d.items():
    print(k)
    print(v)

在这里插入图片描述
6.keys和value
返回keys 和value

d.keys()`在这里插入代码片`
d.values()

在这里插入图片描述
7.pop
这个方法和get有点像,但是有区别,他会返回对应的值后,删除该键值对。

d.pop(1)
d

在这里插入图片描述
8.popitem

删除字典给定键 key 所对应的值,返回值为被删除的值,如果要删除的 key 不存在,则需要添加默认值,否则会报错。
删除指定key

>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('name')
'summer'
>>> t
{'age': 23}

key不存在,返回默认值

>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('new_nmae', 'judy')
'judy'
>>> t
{'name': 'summer', 'age': 23}

key不存在,没有默认值

>>> t = {'name': 'summer', 'age': 23}
>>> t.pop('new_nmae')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'new_nmae'

9.setdefault
功能上与get一致,但是他会向字典里面添加键,值默认为None。
在这里插入图片描述
10.update
类似于合并字典,但是如果有相同的键合并的字典会被新字典的值覆盖。
在这里插入图片描述

2. 集合(set)

a… 特性

不同元素(无重复)
无序
元素必须是不可变类型的对象,集合本身是可变类型

b 创建

定义一个空的集合 my_set = set()
注意: my_set = {} 这样的写法为一个空字典

c. 方法

(1)添加元素(add,update)
add 作为一个整体添加到集合中

my_set = set()
my_set.add("abc")
print(my_set)

update 是把要传入的元素拆分,做为个体传入到集合中

my_set = set()
my_set.update("abc")
print(my_set)

(2)删除元素(remove,pop,discard)
remove 如果有,直接删除;如果没有,程序报错 格式:集合名.remove(元素)

my_set = {11, 13, 15}
my_set.remove(13)
print(my_set)
my_set.remove(131)
print(my_set)

pop 随机删除集合中的元素 如果集合中没有元素则程序报错

my_set = {11, 13, 15}
my_set.pop()
print(my_set)

discard 如果元素存在,直接删除; 如果元素不存在 不做任何操作
格式: 集合名.discard(元素)

my_set = {11, 13, 15}
my_set.discard(13)
print(my_set)
my_set.discard(131)
print(my_set)

(3)交集( & )

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 & set2
print(new_set)
#结果  {3, 4}

(4)并集( | )

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 | set2
print(new_set)
#结果  {1, 2, 3, 4, 5, 6}

(5)差集( - )
项在前一个集合中,但不在一个集合中

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 - set2
print(new_set)
#结果  {1, 2}

(6)对称差集( ^ )
项在前一个集合或后一个集合中,但不会同时出现在二者中

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 ^ set2
print(new_set)
#结果  {1, 2, 5, 6}

(7)去重( 将元组或者列表转化为集合 )

my_list = [1, 2, 3, 4, 2, 3, 1, 2, 2]
#转化为集合
my_set = set(my_list)
print(list(my_set)) 
# 结果  [1, 2, 3, 4]

3. 判断语句(要求掌握多条件判断)

if…:[+elif…:+else…:]
基本判断符号:等于==, 不等于!=, 大于>, 小于<, 大于等于>=, 小于等于<=, 取反not(注意不是!)
多个判断语句结合:与and,或or

一个if语句 + 一个else 语句:

当if 判断为True时,执行if语句下的代码; 而当if判断为False时,执行else语句下面的代码。

n个if语句(n>=2) + 最后一个else语句:

每一个if语句都会被判断,不管它之前的if判断的是True或者False。 判断为True的if语句,其对应的代码会被执行,而为False时则不执行,直接跳到下一个if判断。
而else语句只有当第n个if(即else前一个if)为False时才执行。若第n个if为True, 则不执行else语句对应的内容。

一个if语句 + n 个 elif语句 (n >=1) + 一个else语句:

按照先后顺序进行判断,若当前条件(if 或者是 elif) 为False, 则跳到下一个条件进行判断,否则为True时,执行对应的代码,并且后面还未执行的条件判断都跳过,不再执行了。
即只要遇到一个if或elif为True的, 程序执行完对应的代码后,该轮条件判断就结束了。

4. 三目表达式

格式:为真时的结果 if 判定条件 else 为假时的结果

例1 是先输出结果,再判定条件
输出1,如果5大于3,否则输出0

print(1 if 5>3 else 0) 

例二 一般用于判断赋值中,例如:

x,y = 50,25
small = x if x<y else y
print(small)

例三 还可以嵌套使用,还可以多层嵌套

a,b,c=10,20,6
min_num = a if a<b and a<c else (b if b<a and b<c else c)
print(min_num)

5. 循环语句

python中循环语句只有两种 A.while…: B.for…in…:
A.while语句:当判断语句为真时一直执行缩进的代码块,必须指定跳出条件。
while 判断条件:
执行语句……
B.for语句:这个语句比较灵活,因为可以使用in来指定某一个序列而不用决定跳出条件(当处理完序列后就会跳出循环)

  1. for 变量 in range(10):
    循环需要执行的代码

  2. for 变量 in range(10):
    循环需要执行的代码
    else:
    循环执行结束执行的代码
    C.搭配的关键词:break和continue。用法同java中的用法。
    D.python还允许在循环中搭配else,表示不是由break跳出循环时才能调用(相当于do…while的用法)

https://blog.csdn.net/weixin_41179709/article/details/81586367
https://blog.csdn.net/murenqishi/article/details/39894547
https://blog.csdn.net/youzi_yun/article/details/78943450
https://blog.csdn.net/weixin_42589922/article/details/80902620
https://blog.csdn.net/qq_26261381/article/details/83094534
https://blog.csdn.net/weixin_43946756/article/details/86564991
https://blog.csdn.net/qq_42497250/article/details/81123729
https://blog.csdn.net/weixin_42589922/article/details/80902620
https://blog.csdn.net/mg_aping/article/details/82831599
https://blog.csdn.net/Yort2016/article/details/71159951

猜你喜欢

转载自blog.csdn.net/weixin_43981221/article/details/89010314
今日推荐