2016-11-07 65 views
-1
sample = [['AAAA','BBBB','CCCC'],['BBBBB','FFFFF','GGGGG'],['AA','MM']] 

我需要計算'a'使得a = summation 1/i;我的範圍從1到n-1。在這個過程中,我需要用一個列表來劃分整數(MyInt)。如何用Python中的列表分割整數?

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],而我應該得到的輸出與爲[1.83333333333,2.08333333333,1]列表內的數字。

任何想法,我可能會出錯?

+1

你是什麼意思「由列表除以整數」? – Selcuk

+0

我正在用整數列表(這裏是1)除以數字列表。所以我需要返回一個列表,其中1除以列表中的每個元素 – Biotechgeek

+1

將整數除以列表是沒有意義的。你實際上想要做的是將一個整數除以列表中的每個項目,並將結果放入一個新列表中。另外你的newList = [myInt/x for i2中的x]迭代i2,它是在你的第一行定義的空列表[],所以當然newList將是空的。 – Daniel

回答

1

我需要計算'a'使得a = summation 1/i;其中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施加第一參數與第二參數的前兩個元素,並且用新的列表,它的第一個元素是調用的結果重複它,和其它元件是通過列表的元素,從第三個開始,直到第二個參數只有一個元素。

調用示例澄清:

>>>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的意思是「你知道嗎,這個函數有兩個參數,並返回他們的智商」。這是一個匿名函數。