1 1. 1)网络编程只能是二进制。2)照片和视频也是以二进制储存。 3)html网页爬取到的也是二进制编码。
2
3 2. 非常重要的4个内置函数:zip ,filter,map,sorted
4 1)zip:
5 例子1:
6 l1 = [1,2,3]
7 l2 = ['a','b','c']
8 for i in zip(l1,l2): # zip(l1,l2) 是迭代器。拉链方法。
9 print(i)
#(1,'a')
#(2,'b')
10
11 例子2:把下面表格打印出来。
12 # name age salary
13 # tom 18 10000
14 # marry 20 30000
15 # alex 35 1000000
16 例子2.1
17 name = ('tom','marry','alex')
18 age = (18,20,35)
19 salary = (10000,30000,1000000)
20 for a,b,c in zip(name,age,salary):
21 print(a,b,c)
#tom 18 10000
#marry 20 30000
#alex 35 1000000
22 例子2.2
23 dic1 = {'name':'tom','age':18,'salary':10000}
24 dic2 = {'name':'marry','age':20,'salary':30000}
25 dic3 = {'name':'alex','age':35,'salary':1000000}
26 lis = [dic1,dic2,dic3]
27 for i in lis:
28 print('{0},{1},{2}'.format(i['name'],i['age'],i['salary']))
29 例子2.3
30 dic1 = dict(name = 'tom',age = 18,salary = 10000)
31 dic2 = dict(name = 'marry',age = 20, salary = 30000)
32 dic3 = dict(name = 'alex',age = 35,salary = 1000000)
33 lis = [dic1,dic2,dic3]
34 for i in lis:
35 print(i['name'],i['age'],i['salary'])
36
37
38 2) filter: 筛选。ret = filter(被调用的函数,实参),filter调用函数,把实参传入函数执行代码,筛选出可以让表达式为True的实参,ret接收实参。
39 例子1:把奇数筛选出来。
40 def func(x):
41 return x % 2 == 1 #当表达式为True,ret才接收筛选过的实参。
42 ret = filter(func,[1,2,3]) # ret 是迭代器。filter调用函数func,把实参[1,2,3]循环传入函数func。
43 for i in ret:
44 print(i)
45 例子2:把字符串筛选出来。
46 def is_str(s):
47 if type(s) == str:
48 return True # 还可以这样写: return type(s) == str
49 ret = filter(is_str,[1,'hello',4,36,'python'])
50 for i in ret:
51 print(i)
52 例子3:筛选列表中不是空白的元素(空字符串,空列表,空格,None等等),然后把它们存放在新列表中。注意:' '空格这个字符串为True。
53 def is_not_empty(s):
54 return s and str(s).strip() #当s and str(s).strip()为True时,ret才接收实参。因为当s是整数1,2,5,6,是int,没有strip属性,所以使用str(s)把int
55 ret = filter(is_not_empty,[1,2,'as','',[],' ',5,6,None]) #强转为str。
56 l = []
57 for i in ret:
58 l.append(i)
59 print(l)
60
61 3) map:
62 ret = map(abs,[-1,20,90,-18]) # map调用abs绝对值函数,把实参传入到abs函数里面取绝对值,然后ret接收。ret是迭代器。
63 for i in ret:
64 print(i)
65
66 filter:ret接收实参<=总个数,但不会改变实参的值。map:ret接收实参等于总个数,但可能改变实参的值。
67
68 4) sorted:
69 例子1:
70 l = [-1,20,2,-10]
71 l.sort(key=abs) #按绝对值的大小从小到大排序,不产生新的对象。
72 print(l)
73 例子2:
74 l = [-1,20,2,-10]
75 l.sort()
76 print(l) #从小到大排序,不产生新的对象。
77 print(sorted(l)) #产生新的对象。可以使用print(id(l))和print(id(sorted(l)))查询是否产生新对象。以上两种方法的执行结果都是[-10, -1, 2, 20]。
78 例子3:
79 print(sorted(l,reverse=True)) #reverse=True把sorted(l)排序反转。
80 print(sorted(l,key=abs,reverse=True)) #按绝对值排序,接着反转。
81 例子4:
82 l = ['a','asdfasdf','asdf','aa',' ']
83 ret = sorted(l)
84 print(ret) # 执行结果:[' ', 'a', 'aa', 'asdf', 'asdfasdf']
85 例子5:
86 l = ['a','asdfasdf','asdf','aa',' ']
87 ret = sorted(l,key=len) # 按字符长度进行排序
88 print(ret) # 执行结果:['a', 'aa', 'asdf', ' ', 'asdfasdf']
89
90
91 a = list(range(100)[0:3]) #range(100)切片取前面三个元素,然后强转为list。
92 for i in a :
93 print(i)
94
95
96 2.匿名函数:
97 1)参数可以有多个,使用逗号隔开;只写一行;返回值可以是任何数据类型。
98 lamb = lambda x,y : x+y # x+y是返回值
99 print(lamb(1,2))
100
101 2)匿名函数面试题:
102 A = lambda x : x*2
103 B = lambda x : x*4
104 x = 2
105 x = A(x) # x = 4
106 x = B(x) # x = 16
107 x = A(x) # x = 32
108 print(x) #执行结果是32