1樓:navegador
首先宣告,這種問題的正統解法是使用numpy
下面是不考慮效率的通用版本,滿足 "python自帶" 這個條件, 並且可自定義過濾條件與 get函式
import json
import ast
def flat(nest,cond_func=lambda r:type(r)==ast.Num,get_func=lambda r:r.n):
cd = json.dumps(nest)
t = ast.parse(cd)
g = ast.walk(t)
arr = list(g)
arr = list(filter(cond_func,arr))
arr = list(map(get_func,arr))
return(arr)
arr = [1, [4], 2, [3, [5, 6]]]
flat(arr)
# [1, 2, 4, 3, 5, 6]
cubic255, 0, 0], [0, 255, 0], [0, 0, 255255, 0, 0], [0, 255, 0], [0, 0, 255255, 0, 0], [0, 255, 0], [0, 0, 255]]
]flat(cubic)
#[255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 0, 0, 0, 255]
arr = [1, ["a"], 2, ["b", [5, "c"]]]
flat(arr,cond_func=lambda r:type(r)==ast.Str,get_func=lambda r:r.s)
#['a', 'b', 'c']
2樓:呆坐的熊
defflaten2
(array
):res=
foritem
inarray:if
isinstance
(item
,list
):res
.extend
(flaten
(item
))else
:res.(
item
)return
resprint
(flaten2(a
))菜雞遞迴版本↑,順便膜拜大佬的生成器版本↓。
defflaten
(array
):for
item
inarray:if
isinstance
(item
,list
):yield
from
flaten
(item
)else
:yield
item
(list
(flaten(a)))
python如何將乙個列表為成績,另乙個列表為分數,將其組合起來的成績和分數按排名高低,輸出來呢
建議使用 Pandas 例如 import pandas aspd course 大學英語A1 高等數學 大學生職業規劃 經濟學 lst df pd.DataFrame lst index course df grade 學分績點 大學英語A1 85 2.0 3.5高等數學 77 0.5 2.7大學...
乙個列表A 2,3,4 ,Python如何將其轉換成B 2,3 , 3,4 , 4,2 ?
何谷目 這不就是乙個組合問題嘛 from itertools import combinationsa 2,3 4 b list combinations a r 2 print b 2gua 來兩個。list zip A A 1 A 1 OR A i A 0 ifi len A 1else A i...
Python如何將字串式列表轉化為可以操作的列表
海闊and天空 方式1 給a加上引號,然後使用eval轉化格式不就行啦,注意字串外雙內單或外單內雙 str1 1,2,a 2,4 6 print str1 print type str1 list1 eval str1 print list1 print type list1 檢視物件型別 執行結果...