Python學習備忘3

2021-07-12 05:20:52 字數 3139 閱讀 9704

>>> 

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...