需要帮助将列表中的正数乘以3,并保留其他数字不加修改

时间:2016-10-03 22:17:17

标签: python list numbers multiplying

我的目标是将列表中的所有正数乘以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

3 个答案:

答案 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]