函数连续调用
defadd(x):
classAddNum(int):
def__call__(self, x):
returnAddNum(self.numerator + x)
returnAddNum(x)
printadd(2)(3)(5)
# 10
printadd(2)(3)(4)(5)(6)(7)
# 27
# javascript 版
var add = function(x){
var addNum = function(x){
returnadd(addNum + x);
};
addNum.toString = function(){
returnx;
}
returnaddNum;
}
add(2)(3)(5)//10
add(2)(3)(4)(5)(6)(7)//27
默认值陷阱
>>>defevil(v=[]):
...v.append(1)
...printv
...
>>>evil()
[1]
>>>evil()
[1,
1]
读写csv文件
importcsv
withopen('data.csv',
'rb')
asf:
reader = csv.reader(f)
forrow
inreader:
printrow
# 向csv文件写入
importcsv
withopen(
'data.csv',
'wb')
asf:
writer = csv.writer(f)
writer.writerow(['name',
'address',
'age'])
# 单行写入
data = [
(
'xiaoming ','china','10'),
(
'Lily',
'USA',
'12')]
writer.writerows(data)
# 多行写入
数制转换
>>>int('1000',
2)
8
>>>int('A',
16)
10
格式化 json
echo'{"k": "v"}'| python-m json.tool
list 扁平化
list_ = [[1,
2,
3], [4,
5,
6], [7,
8,
9]]
[k
fori
inlist_
fork
ini]
#[1, 2, 3, 4, 5, 6, 7, 8, 9]
importnumpy
asnp
printnp.r_[[1,
2,
3], [4,
5,
6], [7,
8,
9]]
importitertools
printlist(itertools.chain(*[[1,
2,
3], [4,
5,
6], [7,
8,
9]]))
sum(list_, [])
flatten =
lambdax: [y
forl
inx
fory
inflatten(l)]
iftype(x)
islist
else[x]
flatten(list_)
list 合并
>>>a = [1,
3,
5,
7,
9]
>>>b = [2,
3,
4,
5,
6]
>>>c = [5,
6,
7,
8,
9]
>>>list(set().union(a, b, c))
[1,
2,
3,
4,
5,
6,
7,
8,
9]
出现次数最多的 2 个字母
fromcollections
importCounter
c = Counter('hello world')
print(c.most_common(2))
#[('l', 3), ('o', 2)]
谨慎使用
eval("__import__('os').system('rm -rf /')", {})
置换矩阵
matrix = [[1,
2,
3],[4,
5,
6]]
res = zip( *matrix )
# res = [(1, 4), (2, 5), (3, 6)]
列表推导
[item**2foritem
inlst
ifitem %
2]
map(lambdaitem: item **
2, filter(lambdaitem: item %
2, lst))
>>>list(map(str, [1,
2,
3,
4,
5,
6,
7,
8,
9]))
['1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9']
排列组合
>>>forp
initertools.permutations([1,
2,
3,
4]):
...print''.join(str(x)
forx
inp)
...
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
>>>forc
initertools.combinations([1,
2,
3,
4,
5],
3):
...print''.join(str(x)
forx
inc)
...
123
124
125
134
135
145
234
235
245
345
>>>forc
initertools.combinations_with_replacement([1,
2,
3],
2):
...print''.join(str(x)
forx
inc)
...
11
12
13
22
23
33
>>>forp
initertools.product([1,
2,
3], [4,
5]):
(1,
4)
(1,
5)
(2,
4)
(2,
5)
(3,
4)
(3,
5)
默认字典
>>>m = dict()
>>>m['a']
Traceback (most recent call last):
File
"", line
1,
in
KeyError:
'a'
>>>
>>>m = collections.defaultdict(int)
>>>m['a']
>>>m['b']
>>>m = collections.defaultdict(str)
>>>m['a']
''
>>>m['b'] +=
'a'
>>>m['b']
'a'
>>>m = collections.defaultdict(lambda:
'[default value]')
>>>m['a']
'[default value]'
>>>m['b']
'[default value]'
反转字典
>>>m = {'a':
1,
'b':
2,
'c':
3,
'd':
4}
>>>m
{'d':
4,
'a':
1,
'b':
2,
'c':
3}
>>>
{1:
'a',
2:
'b',
3:
'c',
4:
'd'}
领取专属 10元无门槛券
私享最新 技术干货