python sum高階用法

2021-10-23 03:18:38 字數 1122 閱讀 7651

之前python裡面sum的理解不太到位,今天看到了乙個碾平list的answer. 看完才明白,sum還可以加陣列,加字串。

碾平list的**是這樣的。

s =[1

,[2,

[3,4

]]]flat =

lambda l:

sum(

map(flat, l),[

])ifisinstance

(l,list

)else

[l]res = flat(s)

print

(res)

a =[1

,2,[

3,4]

,[[5

,6],

[7,8

,[1,

[3,4

,[5]

]]]]

]flatten =

lambda x:

[y for l in x for y in flatten(l)]if

type

(x)is

list

else

[x]print

(flatten(a)

)

普通的遞迴寫法是這樣的:

res =

deffun

(s):

for i in s:

ifisinstance

(i,list):

fun(i)

else

:fun(s)

print

(res)

這個題並不是sum的重點,重點是最上面的第一種寫法。sum(map(flat, l), )

這段**是什麼意思?

sum(sequence[,start]) sum函式可以帶初始值,如果是空列表,就可以進行列表合併,但是,前面的必須得是列表巢狀列表的樣式才行。

>>> a = [[1],[2,3],[4,5,6]]

>>> sum(a, )

[1, 2, 3, 4, 5, 6]

這樣的話,就很容易看明白上面的lambda函式是如果實現的了。

python高階用法 Python高階用法

python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...

input高階用法

1.取消按鈕按下時的虛線框 在input裡新增屬性值 hidefocus 或者 hidefocus true 2.唯讀文字框內容 在input裡新增屬性值 readonly 3.防止退後清空的text文件 可把style內容做做為類引用 4.enter鍵可以讓游標移到下乙個輸入框 5.只能為中文 有...

scanf,sscanf高階用法

最近遇到了解析配置的問題,用正規表示式感覺大題小做,使用sscanf因只會用基本用法,感覺功能不夠,上網搜了下,解析起來不費吹灰之力,也很簡潔。原帖出處不詳,網上到處是,我做了點修改 名稱 sscanf 從乙個字串中讀進與指定格式相符的資料.函式原型 int sscanf string str,st...