我的目标是将列表中的所有正数乘以3.我想我几乎得到了解决方案,但我不确定是什么导致它无法工作。它目前只返回原始数字,不会将任何数字乘以3。
def triple_positives(xs):
List = []
product = 3
for i in range (len(List)):
if List[i] >= 0:
product *= i
List.append(xs[i])
return xs
答案 0 :(得分:0)
您正在迭代一个空列表,该循环将尝试访问不存在的元素,更改product
,并将原始列表中未更改的元素追加到新列表中名单。然后你还是返回原始的,未更改的列表。基本上,代码中的几乎每一行都是错误的。
您应该循环输入列表并将相乘的元素附加到新列表,然后返回新列表:
def triple_positives(xs):
List = []
product = 3
for i in xs:
if i > 0:
List.append(i*product)
return List
此外,0不是正数。使用>
代替>=
。
答案 1 :(得分:0)
修改你的功能它应该是这样的。 0不是正数。所以使用>而不是> =。
def triple_positives(xs):
List = []
product = 3
for i in xs:
if i > 0:
i=i*product
List.append(i)
return List
但这也可以这样做
def triple_positives(xs):
return [3*i if i>0 else i for i in xs ]
答案 2 :(得分:0)
在您的代码中,存在多个问题。以下是修订版的更新版本:
>>> def triple_positives(xs):
... List = []
... product = 3
... for i in range (len(xs)):
... if xs[i] >= 0:
... List.append(xs[i]*3)
... else:
... List.append(xs[i])
... return List
...
>>> my_list = [1, 2, -1, 5, -2]
>>> triple_positives(my_list)
[3, 6, -1, 15, -2]
或者,您可以使用列表理解来实现此目的:
>>> [item * 3 if item > 0 else item for item in my_list]
[3, 6, -1, 15, -2]