如果向量中的数字小于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])
答案 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的新手,可能是编程的新手。
由于以下原因,代码有点令人困惑。
numberlist
的全局变量,并为其分配一个数字数组。 x
的参数再次命名为numberlist
。x
时,会将您分配给全局变量numberlist
的相同值数组传递给开头。需要注意的重点:
numberlist
和x
的名为numberlist
的参数是两个完全不同的变量。您所拥有的效果是无法在函数numberlist
内访问全局变量x
。你实际上并没有在任何地方使用全局变量numberlist
。 numberlist
并将其传递给x
,而不是x([3.2,6,7.8,1,3,2.5])
,则只需x(numberlist)
。x
的{{1}}参数重命名为其他内容。例如numberlist
。考虑到这些因素,您的代码更具可读性,如下所示:
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