2017-01-30 23 views
1
import numpy as np 
def Vin(t): 
    inputs = [] 
    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 

私はt値の範囲でこの機能を使用する場合、私は一つだけの結果を、取得python for-loopは一度だけ実行されますか?

すなわち

input1=Vin(tpoints) 
print (input1) 

だけ私が欲しいのに対し、[1]、関数がためにそれを行うに与えますすべてt値です。

+3

関数が 'return'にヒットすると、関数は終了します。あなたが戻る前にループ全体を実行したい場合は、 'return'ステートメントをループの後に置くのではなく、ループの後ろに置いてください。 – khelwood

+1

ループの最初の繰り返しで終了しています –

答えて

0

forループでfromを返すので、ループの最初の繰り返しで関数から戻ることになります。

あなたは再令状電子機能をかもしれ

コード

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): 
reduce map(lambda x:int((-1)**(np.floor(t[i] < 1))), range (1000)) 
+1

ありがとうございました:) – chknpie

0

試してみてください。

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 

リターンの現在のインデント、

3

第一の繰り返しの後にforループを抜けます他の人が言ったように、returnステートメントに字下げエラーがあります。ずっと、

return [1 if (-1)**(np.floor(2 * t[i])) == 1 else -1 for i in range (1000)] 

そのリストcomprenhension +三元建設文はあなた-1,1、アレイ内の1行を作成します。私は、より多くのニシキヘビ方法でコードを書き換えるすべてが面倒なループを回避し、その結果、エラー抵抗することができませんでしたループを使って書くよりも高速です。

+0

機能をさらに減らすことができます、私の答えを確認してください –

関連する問題