2016-11-07 5 views
-1

a = summation 1/iとなるように 'a'を計算する必要があります。 iは1からn-1までの範囲である。このプロセスでは、整数(MyInt)をリストで除算する必要があります。整数をリストで分割する方法は?

i2 =[] 
afinal =[] 
for sub_list in sample: 
    i1 = range(len(sample[0])) 
    i1.pop(0) 
    myInt = [1 for x in i1] 
    newList = [float(int1)/float(x) for int1,x in zip(myInt,i1)] 
    a = [sum(i) for i in zip(newList)] 
afinal.append(a) 
print afinal 

はしかし、私は、リスト内の[[1.0]]、[2.08333333333,1、1.83333333333]私はのようにして出力を取得する必要があるのに対し、数値として出力を取得します。

どこが間違っているかもしれないと思いますか?

+1

「整数でリストを分割する」とはどういう意味ですか? – Selcuk

+0

整数(ここでは1)を数値のリストで除算しています。リスト内の各要素で1を除算したリストを返す必要があります – Biotechgeek

+1

リストで整数を除算することは意味がありません。あなたが実際にやってみたいことは、リスト内の各項目で整数を除算し、結果を新しいリストに入れることです。また、あなたのnewList = [myInt/x for i2]はi2を反復しています。これは最初の行で定義された空のリスト[]ですので、もちろんnewListは空です。 – Daniel

答えて

1

a = summation 1/iとなるように 'a'を計算する必要があります。何をしようとすることをここでiは1からn-1の

>>> n = 5 
>>> a = sum(1.0/i for i in range(1,n)) 
>>> a 
2.083333333333333 
>>> 1./1 + 1./2 + 1./3 + 1./4 
2.083333333333333 

の範囲にありますか?

+0

はい!それは大いに役立ちます。それがループで動作するかどうか確認してみましょう – Biotechgeek

+0

なぜここでは動作しませんか? https://eval.in/673136。私は何かが分かっていないように感じる – Biotechgeek

+0

ああ。それが解決する – Biotechgeek

0

あなたが話していると仮定すると(整数の除算)。私はNumpyを使うほうが好きです。あなたが探しているものかもしれません、以下:

import numpy as np 

a = np.array([1,2,3,4,5])  # a List 
b = 3       # INT Value 
print b/a 
1

私はよく理解していれば、あなたはあなたのリストのすべての要素によってaを分割したいです。あなたが必要なもの はreduceです:

l = [1, 2, 3, 4] 
reduce((lambda x, y : x/y), l) 

lの他のすべての要素で割った、1である、lの最初の要素を返します。

説明

reduce 2番目のパラメータの最初の2つの要素の最初のパラメータを適用し、その最初の要素の呼び出しの結果である新たなリスト、および他の要素とそれを繰り返します3番目から始まり、2番目のパラメータが1つの要素しか持たないまで、渡されたリストの要素です。

例は、明確にするために呼び出します。

>>>reduce((lambda x, y : x+y), [1, 2, 3]) 
step 1: 1+2=3, so the new call is reduce((lambda x, y : x+y), [3, 3]) 
step 2: 3+3=6, so the new call is reduce((lambda x, y : x+y), [6]) 
step 3: [6] has only one element, so returns 6. 

lambda x, y : x/y「あなたは知っている二つの引数を取り、それが彼らの商を返す関数」を意味します。これは無名関数です。

関連する問題