1. 程式人生 > 其它 >列表元素個數的加權和

列表元素個數的加權和

技術標籤:Python

其實挺簡單的一道題,當時腦抽了轉不過彎來(其實主要還是因為我人菜),題目如下

  • 題目描述
    輸入一個巢狀列表,巢狀層次不限,根據層次數來求列表元素的加權個數和。
    第一層每個元素算一個元素,第二層每個元素算2個元素,第三層每個元素算3個元素,第四層每個元素算4個元素,…,以此類推進行計算。
  • 輸入
    在一行中輸入一個列表。
  • 輸出
    在一行中輸出加權元素個數值。
  • 樣例輸入
    [1,2,[3,4,[5,6],7],8]
  • 樣例輸出
    15
  • 正確解題思路✔
    通過遞迴的方法,判斷當層有沒有列表,存在列表就統計該層非列表元素並乘以深度權值同時向內層列表遞歸併將深度權值加1,不存在列表時直接用該層元素個數乘以權值返回即可,注意遞迴需設定終止條件
  • 錯誤解題思路❌
    模擬考時腦抽了想著用字串操作來做,先將輸入字串中的,替換為空字元,然後每次遇到[就將權值加1,遇到]就將權值減1,忽略了替換掉,後,元素12將被判定為12兩個元素,進而計算出錯誤的結果
  • 程式
    def fn(base,depth):
    if(not ([i for i in base if type(i) == list])):
        return len([i for i in base])*depth
    else:
        temp = [i for i in base if type(i) == list]
        tempAmount = 0
        for i in temp:
    tempAmount += fn(i,depth+1) return len([i for i in base if type(i) == int])*depth + tempAmount List = eval(input()) print(fn(List,1))