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