Python 巢狀列表展開

2021-08-25 17:13:05 字數 846 閱讀 5441

問題1:對於列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] 轉化成列表 list_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9] 的問題。

python實現:

# 普通方法

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]

list_2 =

for _ in list_1:

list_2 += _

print(list_2)

# 列表推導

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]

list_2 = [i for k in list_1 for i in k]

print(list_2)

# 使用sum

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]

list_2 = sum(list_1, )

print(list_2)

問題2:對於複雜一些的,如:list =[1,[2],[[3]],[[4,[5],6]],7,8,[9]],上面的方法就不好使了。得換個方法了,這裡使用遞迴的方法解決。

python實現:

def

flat

(nums):

res =

for i in nums:

if isinstance(i, list):

res.extend(flat(i))

else:

return res

演算法 巢狀列表展開

問題1 對於列表形如 list 1 1,2 3,4,5 6,7 8 9 轉化成列表 list 2 1,2,3,4,5,6,7,8,9 的問題。list 1 1,2 3,4,5 6,7 8 9 方法一 list 2 for sub list in list 1 list 2 sub list prin...

python 多維列表(巢狀列表)

python 多維列表 巢狀列表 姓名,年齡,工資 姓名,年齡,工資 姓名,年齡,工資 字串 姓名,年齡,工資 例如 張三,30,2000 str 張三,30,2000 l str.split print l emp list 單個人的資訊 info input 請輸入員工資訊 info list ...

Python 如何展開巢狀的序列

問題 你想將乙個多層巢狀的序列展開成乙個單層列表 解決方案 可以寫乙個包含 yield from 語句的遞迴生成器來輕鬆解決這個問題。比如 from collections import iterable 程式設計客棧def flatten items,ignore types str,bytes ...