python for循环只执行一次?
当我在python for循环只执行一次?,python,function,loops,if-statement,for-loop,Python,Function,Loops,If Statement,For Loop,当我在t值范围内使用此函数时,我只得到一个结果 i、 e 只给出[1],而我希望函数对每个t值执行此操作。您将从for循环中的返回,因此您将在循环的第一次迭代时从函数返回 您可以按如下方式重新编写函数 代码 input1=Vin(tpoints) print (input1) 检查此处函数中返回输入的缩进 顺便说一句,您的函数可以简化为更具Python风格和效率的代码 def Vin(t): inputs = [] for i in range (1000):
t
值范围内使用此函数时,我只得到一个结果
i、 e
只给出[1],而我希望函数对每个
t
值执行此操作。您将从for循环中的返回,因此您将在循环的第一次迭代时从函数返回
您可以按如下方式重新编写函数
代码
input1=Vin(tpoints)
print (input1)
检查此处函数中返回输入的缩进
顺便说一句,您的函数可以简化为更具Python风格和效率的代码
def Vin(t):
inputs = []
for i in range (1000):
if (-1)**(np.floor( 2 * t[i] )) == 1:
inputs.append(1)
else:
inputs.append(-1)
return inputs
def Vin(t):
缩小图(λx:int(-1)**(np.层(t[i]<1))),范围(1000))
试试:
返回的当前缩进,在第一次迭代后退出for循环正如其他人所说,您的
返回
语句中存在缩进错误。我忍不住要以一种更具python风格的方式重写代码,以避免所有繁琐的循环和由此产生的错误:
for i in range (1000):
if (-1)**(np.floor( 2 * t[i] )) == 1:
Vin = (1)
inputs.append(Vin)
else:
Vin = (-1)
inputs.append(Vin)
return inputs
列表压缩+三元构造语句在一行中创建-1,1数组,比使用循环编写要快得多。函数一点击
返回
,函数就完成了。如果您想在返回之前运行整个循环,请将return
语句放在循环之后,而不是放在循环内部。您将在循环的第一次迭代中退出该函数可以进一步缩减,请检查我的答案
def Vin(t):
reduce map(lambda x:int((-1)**(np.floor( t[i] < 1))), range (1000))
for i in range (1000):
if (-1)**(np.floor( 2 * t[i] )) == 1:
Vin = (1)
inputs.append(Vin)
else:
Vin = (-1)
inputs.append(Vin)
return inputs
return [1 if (-1)**(np.floor( 2 * t[i] )) == 1 else -1 for i in range (1000)]