🖼 人工智能学习总目录

🖼 《Python王者归来》小结及目录

9、字典(Dict)

clear()、len()、dict.fromkeys(seq1,seq2)新建字典、dict.items()、dict.keys()、dict.values()

dict(zip(list1,list2))

增dict[‘a’]=A

删del dict[‘a’]、dict.pop()需要指定对象、dict.popitem()默认弹出最后

改dict[‘a’]=A、a.update(b)更新值、dict.setdefault(‘a’,15)设置不可改、dict.get(‘a’,15)

查dict.get(‘points’,’None’)有出无None

遍历dict.items()、dict..keys()、dict..values()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# ch9_31.py
song = """Are you sleeping, are you sleeping, Brother John, Brother John?
Morning bells are ringing, morning bells are ringing.
Ding ding dong, Ding ding dong."""
mydict = {} # 空字典未来储存单字计数结果
print("原始歌曲")
print(song)

# 以下是将歌曲大写字母全部改成小写
songLower = song.lower() # 歌曲改为小写
print("小写歌曲")
print(songLower)

# 将歌曲的标点符号用空字符取代
for ch in songLower:
if ch in ".,?":
songLower = songLower.replace(ch,'')
print("不再有标点符号的歌曲")
print(songLower)

# 将歌曲字符串转成列表
songList = songLower.split()
print("以下是歌曲列表")
print(songList) # 打印歌曲列表

# 将歌曲列表处理成字典
# mydict = {wd:songList.count(wd) for wd in songList}
for wd in songList:
if wd in mydict: # 检查此字是否已在字典内
mydict[wd] += 1 # 累计出现次数
else:
mydict[wd] = 1 # 第一次出现的字建立此键与值

print("以下是最后执行结果")
print(mydict) # 打印字典


word = 'deepstone'
alphabetCount = {alphabet:word.count(alphabet) for alphabet in word}
print(alphabetCount)

10、集合(Set)

set()、基数(cardinality)、len()、clear()

基础操作:&intersection()、|union()、-difference()、symmetric_difference()取不同元素组成新集合

==、!=、in、not in、A.intersection_update(B,C)三者交集更新A值,update()相加

isdisjoint()共同元素、issubset()是子集、isuperset()是超集

增 add()、update()

删 remove()、discard()可删除不存在的元素、pop()

拷贝 copy()

不可变集合(forzenset不可变且是哈希的)冻结集合(immutable set)

1
2
3
4
# ch10_30.py
word = 'deepstone'
alphabetCount = {alphabet:word.count(alphabet) for alphabet in set(word)}
print(alphabetCount)

11、函数设计

参数:位置参数、关键字参数(传入keyword arguments)、默认值(参数列表)

列表参数、任意数量参数 、关键词参数 * 、 多返回值是tuple

文件字符串Docstring(def函数下的注释)、闭包closure(内部函数外环境变量值)

递归式函数设计recursive、堆栈stack、pop、push、sys.getrecursionlimit()

locals()、globals()、lambda arg1[,….]:expresion 匿名函数(anonymous function)

筛选列表filter、迭代列表map、装饰器(decorator)传入一个函数,传回留一个函数@upper

str.replace(ch,’ ‘)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mylist = [1,2,3,4,5,6,7]

# 定义lambda函数(带入x,x%2==1?)
lambda x:(x%2==1)

# filter只保留True元素对象
print(list(filter(lambda x:(x%2==1),mylist)))

# map表示全代入func
print(list(map(lambda x:(x%2==1),mylist)))

#0
from functools import reduce
#reduce(f,[a,b,c,d]) = f( f( f( a,b ),c ),d )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#1
def upper(func): # 装饰器
def newFunc(args):
oldresult = func(args)
newresult = oldresult.upper()
print('函数名称 : ', func.__name__)
print('函数参数 : ', args)
return newresult
return newFunc
@upper # 设定装饰器
def greeting(string): # 问候函数
return string

print(greeting('Hello! iPhone'))

#2
def upper(func): # 大写装饰器
def newFunc(args):
oldresult = func(args)
newresult = oldresult.upper()
return newresult
return newFunc
def bold(func): # 加粗体字符串装饰器
def wrapper(args):
return 'bold' + func(args) + 'bold'
return wrapper

@bold # 设定加粗体字符串装饰器
@upper # 设定大写装饰器
def greeting(string): # 问候函数
return string

print(greeting('Hello! iPhone'))

#3
def gcd(a, b):
return a if b == 0 else gcd(b, a % b)

def lcm(a, b):
return a * b // gcd(a, b)

a, b = eval(input("请输入2个整数值 : ")) #输入逗号间隔
print("最大公约数是 : ", gcd(a, b))
print("最小公倍数是 : ", lcm(a, b))