>>>
deff
(x):
return x*x
>>> r = map(f,[1,2,3,4,5,6,7,8,9])
>>> list(r) #r是乙個iterator因此通過list()函式讓它把整個序列都計算出來並返回乙個list
[1, 4, 9, 16, 25, 36, 49, 64, 81]
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce
defstr2int
(s):
deffn
(x, y):
return x * 10 + y
defchar2num
(s):
return [s]
#等同於t =
#return t[s]
return reduce(fn, map(char2num, s))
或者進一步簡化為
from functools import reduce
defchar2num
(s):
return [s]
defstr2int
(s):
return reduce(lambda x, y: x * 10 + y, map(char2num, s)) #lambda為匿名函式,lambda語句中,冒號前是引數,可以有多個,用逗號隔開,冒號右邊的返回值。lambda語句構建的其實是乙個函式物件
def
normalize
(name):
return name.capitalize()
# 測試:
l1 = ['adam', 'lisa', 'bart']
l2 = list(map(normalize, l1))
print(l2)
from functools import reduce
defprod
(l):
return reduce(lambda x,y: x*y ,l)
print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
from functools import reduce
defstr2float
(s):
sn = s.split('.')[0]+s.split('.')[-1]
#sn = '123456'
defchar2num
(sn):
return [sn]
defstr2int
(sn):
return reduce(lambda x, y: x * 10 + y, map(char2num, sn))
# sn = 123456
return str2int(sn)/pow(10,len(s)-s.index('.')-1)
# pow(10,len(s)-s.index('.')-1的結果是pow(10,3)=1000,123456/1000=123.456 index是求小數點的位置為3
print('str2float(\'123.456\') =', str2float('123.456'))
過濾元素,與map類似,輸入乙個函式和乙個list
def
not_empty
(s):
return s and s.strip()
#strip是去除字串的空格,return語句中的and 相當於 if s then s.strip()
list(filter(not_empty, ['a', '', 'b', none, 'c', ' ']))
# 結果: ['a', 'b', 'c']
def
_odd_iter
(): n =1
while
true:
n=n+2
yield n
def_not_divisible
(n):
return
lambda x : x%n>0
defprimes
():yield
2 it = _odd_iter()
while
true:
n = next(it)#返回初始序列3開始的奇數序列
yield n
it = filter(_not_divisible(n),it) # 構造新序列
for n in primes():
if n < 1000:
print(n)
else:
break
def
is_palindrome
(n):
n=str(n)
return n[:] ==n[::-1]
output = filter(is_palindrome, range(1, 1000))
print(list(output))
key函式,反向排序
>>> sorted(['bob', 'about', 'zoo', 'credit'], key=str.lower, reverse=true)
['zoo', 'credit', 'bob', 'about']
tuple按照名字和成績排序
l = [('bob', 75), ('adam', 92), ('bart', 66), ('lisa', 88)]
defby_name
(t):
return t[0]
l2 = sorted(l, key=by_name)
print(l2)
defby_score
(t):
return -t[1]
l3 =sorted(l,key=by_score)
print(l3)
Lua 學習備忘錄3
一些大型遊戲需要對資料的整理,這樣便於修改和統一管理還有修改。常見的有js和csv csv 其實就是都好分割的簡單文字結構,所以當作一般的文本來處理就好了,js需要解析,有現成的解析庫 function getline filename index 0 myline for line in io.l...
python學習備忘錄 1
前段時間學了shell指令碼,看的乙個頭痛,主要是語法太犀利了,看完基本忘了很多,以至於上篇系列文章很多還停在草稿階段,等假期再補上把。無意中發現了python,這玩意靈活而且語法跟c有相似風格,起碼不要在寫做條件測試了吧,話說shell的測試和控制流程語法都太犀利的,以至於要經常翻才行。不多說了,...
leetcode隨記備忘(3)
除自身以外陣列乘積 這道題不能用除法,所以我們可以從後往前以及從前往後兩次遍歷。由於輸出空間不算空間複雜度,所以可以先把正序的結果放進輸出空間,在逆序的時候對應乘一下就行了,這樣應該就算是o 1 的空間複雜度。如下 class solution prod 1 for int i length 2 i...