我想使用一个for循环来定义一个范围,我想使用一个while循环来检查for循环中每个值的条件,并为我提供不同c值的结果,但是不幸的是,我的算法不起作用,我也不知道我的错误是什么。
j=0
jl=[]
c=np.linspace(0,20,num=20)
for a in range(0,len(c)):
while j<5:
j=c[a]+2
jl.append(j)
我正在寻找的结果是它将不同的c值放入while循环内,并计算j并检查其是否大于5。如果是,则将其附加到jl。总的来说,我想用索引的for循环定义一个范围,同时还要在while循环内检查该范围的每个值,并获得j的结果。 因此预期结果是j的值小于5(c [a] +2 <5)并将j的值存储在jl
答案 0 :(得分:1)
您的代码中有一个问题:
j=0
“ While loop”从不运行,因为他的条件是j> 5。更正该问题并告诉我们是否可行。
答案 1 :(得分:1)
请仔细检查以下建议的解决方案是否满足您的所有要求。无论如何,我认为列表理解(例如 compare section 5.1.3.)可以为您提供帮助。
c=np.linspace(0,20,num=20)
ls = [x+2 for x in c if((x+2)<5)]
print(ls)
将产生以下输出:
[2.0, 3.052631578947368, 4.105263157894736]
如果您想进行更复杂的数据操作,也可以借助以下功能来完成此操作:喜欢:
def someManipulation(x):
return x+2
ls = [someManipulation(x) for x in c if(someManipulation(x)<5)]
答案 2 :(得分:1)
您的算法无效,因为
while j<5:
j=c[a]+2
是j = 0,a = 0的无限循环。
您可能想写的是:
for x in c:
j = x + 2
if j < 5:
jl.append(j)
不过,另一个答案中的列表理解版本的功能完全相同,但是更好。