Python列表數字元素加權和

friedrichor發表於2020-10-13

第6章-4 列表數字元素加權和(1)

輸入一個巢狀列表,巢狀層次不限,根據層次,求列表元素的加權和。第一層每個元素 的值為:元素值 * 1,第二層每個元素的值為:元素值 * 2,第三層每個元素的值為:元素值 * 3, …,以此類推!

輸入格式:

在一行中輸入列表

輸出格式:

在一行中輸出加權和

輸入樣例:
在這裡給出一組輸入。例如:

[1,2,[3,4,[5,6],7],8]

輸出樣例:
在這裡給出相應的輸出。例如:

72

x = eval(input())
'''一層一層加'''
def Sum(x, sums, weight):
    for ch in x:
        if isinstance(ch, int):
            sums += ch * weight
    for ch in x:
        if isinstance(ch, list):
            sums = Sum(ch, sums, weight+1)
    return sums
print(Sum(x, 0, 1))

另解:

a = eval(input())
j = 0
def sum(n):
    global j
    j += 1
    sums = 0
    for i in n:
        if isinstance(i, list):
            continue
        if isinstance(i, int):
            sums += 1 * j
    for i in n:
        if isinstance(i, list):
            sums += sum(i)
        if isinstance(i, int):
            continue
    return sums
print(sum(a))

相關文章