因此,如果输入为[3,2,5],则输出为[1,2,25],如果输入为[5,10,20],则输出为[1,10, 400] (5 ^ 0,10 ^ 1,20 ^ 2)
答案 0 :(得分:0)
我认为这是一个错字,我认为你的3不会成为2(并保持3) 您可以在输入列表和范围之间使用地图。
def raise_power(input_list):
return list(map(lambda x,y: x**y, input_list, range(len(input_list))))
或者更直接的方式(由@roganjosh建议)把它放在:
def raise_power(input_list):
return [i**x for x, i in enumerate(input_list)]
两者在计算时间上没有显着差异。 (见评论)
答案 1 :(得分:0)
一种非常简单的方法是使用如下的循环
for i in range(0,len(input)):
print(input[i]**i)
答案 2 :(得分:0)
所以,如果我的输入是:
3 2 5 3 2 5
输出应该是:
[1, 2, 25, 27, 16, 3125]
但是你的代码会给出:
[1, 2, 25, 1, 2, 25]
因为在3,2,5之后,当列表中再次出现3时,索引(i)将在列表中选择前3而不是第3或第3或任何。因此,索引将始终选择第一个出现的数字,因此您将得到错误的输出。
正确的方法是使用枚举:
print([j**i for i,j in enumerate([int(i) for i in input().split()])])
输出:
[1, 2, 25, 27, 16, 3125]
答案 3 :(得分:0)
您需要将输入拆分为一个列表,然后使用 enumerate 获取索引位置和值。由于该值将是一个字符串,因此请使用 int 进行转换,然后将其乘以幂。
x = input('Enter the list of numbers : ')
y = [int(i) for i in x.split(',')]
print ([int(a)**i for i,a in enumerate(y)])
代码输出将是:
Enter the list of numbers : 3,2,5
[1, 2, 25]
答案 4 :(得分:-1)
我实际上是自己想出来的!我相信你们都非常自豪。以下代码将生成我正在寻找的输出。谢谢你!
firstlist = [int(x) for x in input().split()] newlist = [i ** (int(firstlist.index(i))) for i in firstlist]