循环,将数字5添加到小于4的向量的所有值

时间:2012-10-16 18:56:31

标签: python

如果向量中的数字小于4,我试图向此向量添加5。我觉得我非常接近,但它没有正确运行。任何人都可以给我一些帮助,在向量中添加5到任何小于4的值吗?

from pylab import * 
numberlist = [3.2,6,7.8,1,3,2.5]
def x(numberlist):
    for num in numberlist:
        if num > 4:
            print(num)
        else :
            print(num + 5)
print x([3.2,6,7.8,1,3,2.5])

4 个答案:

答案 0 :(得分:4)

怎么样

x = [ v + 5 if v < 4 else v for v in x ]

答案 1 :(得分:2)

如果我理解PyLab是正确的,那么你应该有一个numpy数组,应该避免循环和使用数组操作......

from pylab import * # which should bring numpy ndarray into scope!?
a = ndarray( [3.2,6,7.8,1,3,2.5] )
a[a < 4] += 5.
print a
# [ 8.2  6.   7.8  6.   8.   7.5]

答案 2 :(得分:2)

你所拥有的正是你所描述的。看起来你是python的新手,可能是编程的新手。

由于以下原因,代码有点令人困惑。

  1. 您定义一个名为numberlist的全局变量,并为其分配一个数字数组。
  2. 您的函数x的参数再次命名为numberlist
  3. 调用x时,会将您分配给全局变量numberlist的相同值数组传递给开头。
  4. 需要注意的重点:

    • 全局变量numberlistx的名为numberlist的参数是两个完全不同的变量。您所拥有的效果是无法在函数numberlist内访问全局变量x。你实际上并没有在任何地方使用全局变量numberlist
    • 如果您想使用全局变量numberlist并将其传递给x,而不是x([3.2,6,7.8,1,3,2.5]),则只需x(numberlist)
    • 您应该将x的{​​{1}}参数重命名为其他内容。例如numberlist
    • 你真的不需要顶部的import语句。

    考虑到这些因素,您的代码更具可读性,如下所示:

    mylist

答案 3 :(得分:0)

无法帮助python方面,但在R方面这是微不足道的

x <- sample(1:10, 20, rep = T)
> x
 [1]  5  9  1  1  8  9  5 10  2  3  8  1  5  9  7  1  6  2 10  6
 > x[which(x<5)] <- x[which(x<5)] + 5
Arrrr> x
 [1]  5  9  6  6  8  9  5 10  7  8  8  6  5  9  7  6  6  7 10  6