2016-11-22 3 views
0

リストがあります。[1.05,1.06,1.08,1.01,1.29,1.07,1.06] リスト内の任意の要素iに、次のすべての要素i + 1を最後まで掛ける関数にしたいリストの 例:function(2)、(1.08 * 1.01 * 1.29 * 1.07 * 1.06)の結果を返します。リストに要素を掛ける

これは見つかりましたが、NoneTypeを返しました。関数。必要pandasソリューションは最初prodilocによって選択して使用

def multiply(j,n): 
    total=1 
    for i in range(j,len(n)): 
     total*=n[i] 
    if total is not None: 
     print (total) 
+0

なぜpandasタグですか? 'list'は' series'ですか? – jezrael

+0

"return total"を関数の最後に追加して、値を返すようにします(ただし、まだ実行したくないことはわかりませんが)。 –

答えて

1

場合 おかげで、:

s = pd.Series([1,2,3,4]) 
print (s) 
0 1 
1 2 
2 3 
3 4 
dtype: int64 

print (s.iloc[2:]) 
2 3 
3 4 
dtype: int64 

print (s.iloc[2:].prod()) 
12 

しかしBenjamin commentから純粋なのpython、使用溶液が必要な場合は、代わりに - printからreturn

m = [1,2,3,4] 

def multiply(j,n): 
    total=1 
    for i in range(j,len(n)): 
     total*=n[i] 
    return total 

print (multiply(2,m)) 
12 
+0

合計は決してこの場合はNoneです。その 'if'文を削除することができます – Tim

+0

@TimP - ありがとう、常に少なくとも1を返す – jezrael

+0

素晴らしい!どうもありがとうございました! – enden

関連する問題