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)]