我怎样才能得到这个改变列表值以适用于不同整数值的函数?
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])
我正在使用递归,以便从函数内部调用函数的次数与到达列表末尾所需的次数一样多,因此您无需为其提供列表的长度。
对你有用吗?
我有一个列表,其长度可以是任意长度,具体取决于另一个变量。列表中的值开始时相同,因此如果长度为 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])
我正在使用递归,以便从函数内部调用函数的次数与到达列表末尾所需的次数一样多,因此您无需为其提供列表的长度。
对你有用吗?