我怎样才能得到这个改变列表值以适用于不同整数值的函数?

How can I get this function which changes list values to work for different integer values?

我有一个列表,其长度可以是任意长度,具体取决于另一个变量。列表中的值开始时相同,因此如果长度为 5 且值为 1000,则它看起来像 [1000,1000,1000,1000,1000]

def change_list(list1):
    
    for x in list1[1:]:
        list1[0] += x/2
    for x in range(1,len(list1)):
        list1[x] = list1[x]/2

    for x in list1[2:]:
        list1[1] += x/2
    for x in range(2,len(list1)):
        list1[x] = list1[x]/2
        
    for x in list1[3:]:
        list1[2] += x/2
    for x in range(3,len(list1)):
        list1[x] = list1[x]/2

    for x in list1[4:]:
        list1[3] += x/2
    for x in range(4,len(list1)):
        list1[x] = list1[x]/2

    for x in list1[5:]:
        list1[4] += x/2

    return list1

list2= change_list(list1)
print (list2)

它的工作原理是将索引后的值减半并将它们添加到索引的值中,减半的值保持减半并重复所以在前两个 for循环看起来像 3000, 500, 500, 500, 500 然后 3000, 1250, 250 ,250, 250 然后 3000、1250、500、125、125 最后 3000, 1250, 500 ,187.5 ,62.5 的作用是所有值加起来与 5 个 1000s

的数量相同

我不知道如何将其更改为 使其适用于任何长度而不是 5 所以如果列表是 1000, 1000, 1000, 1000, 1000, 1000结果需要是 3500、1500、625,250、93.75、31.25 请帮助我完全卡住了!

试试这个:

def change_list(list1, index=0):
    i = index + 1
    while i < len(list1):
        list1[i] /= 2
        list1[index] += list1[i]
        i += 1

    if index < len(list1):
        index += 1
        list1 = change_list(list1, index=index)

    return list1


list2 = change_list([1000, 1000, 1000, 1000, 1000])

我正在使用递归,以便从函数内部调用函数的次数与到达列表末尾所需的次数一样多,因此您无需为其提供列表的长度。

对你有用吗?