自己練習而記錄
1. Write a Python program to calculate the sum of a list of numbers.
3. Write a Python program of recursion list sum.
Test Data: [1, 2, [3,4], [5,6]]
Expected Result: 21
Expected Result: 21
第一個題目是 跑正常 list 出來總和
第二題目則是 給一個 包裝很多 list 的 list 出來的總和
解題 邏輯為 用 for 迴圈 去抓 i
如果 i 是 list 則 再跑自己一次 直到是單純 int
則 x += i
recursion 有個邏輯 是 recursion 完後的值
要拿來用 所以才有 x =+ b
def find_sum(n):
x = 0
for i in n:
# 設定停損點
if isinstance(i,list):
# 如果 i 為 list 的話,則選擇 再帶入 i 再跑一次
# find_sum(i) 後跑出來的值 為 b,把他加入 x
b = find_sum(i)
x += b
else:
# 如不是 list 則 加入 x
x += i
return x
f = [1, 2, [3,4], [5,6]]
print(find_sum(f))
另外一個題目 則是 flatten_lst
就是把層層list 展開成 一個 list
l1 = [1, 2, [2, 4, 5, [4, 7], 6, 7, [3, 4]]]
def flatten_lst(lst):
x = []
for i in lst:
if isinstance(i, list):
b = flatten_lst(i)
# list 可用+ 相加
b += x
else:
x.append(i)
return x
解法跟上面的大同小異
一樣 一個一個看後 單獨拿出來放進去 x
網路上有許多 recursion 的觀念的 YouTube 影片
有些人說 把大題目切成小塊 或是 一個 加上 一堆 的概念
不過到自己要去理解的時候還是覺得看不懂