2016-09-24 48 views
0

我有這個代碼生成兩個列表。一個列表從1-30開始,另一個從30-1開始。如何將some_list2的每個元素除以some_list的每個元素。它會是這樣的:1/302/29,等等。我正考慮將每個分部值存儲在一個新列表中 - 一個分部,一個新元素。列表之間的列表劃分

以下是我有:

some_list = [] 
some_list2 = [] 

for i in reversed(range(1, 31)): 
    a = i 
    some_list.append(a) 
for x in range(1,31): 
    b = x 
    some_list2.append(b) 

我試圖將一個列表由另一個作爲一個整體,我看着一個單獨的for循環分裂,但我堅持。順便說一下,我正在爲此練習。

+1

爲了記錄,您寫的代碼可以簡化爲'some_list = list(range(1,31))','some_list2 = some_list [:: - 1]'。即使您必須通過迭代和「追加」(在「追加」愚蠢之前將'賦值給'a',直接'直接追加''i''''''''''''''''''''''''')來執行冗餘工作。 – ShadowRanger

回答

2

您可以通過zip荷蘭國際集團的名單一起開箱元組元素和將與列表理解這樣做:

r = [i/j for i,j in zip(some_list2, some_list)] 

這實質上創建(some_list2[i], some_list[i])值的元組,它們分配給ij,然後執行師。

r現在是拿着結果的列表:從operator模塊

print(r) 
[0.03333333333333333, 
0.06896551724137931, 
0.10714285714285714, 
0.14814814814814814, 
0.19230769230769232, 
... 
4.166666666666667, 
5.2, 
6.75, 
9.333333333333334, 
14.5, 
30.0] 

或者,您也可以做到這一點在功能時尚,搭配maptruediv

from operator import truediv 

r = list(map(truediv, some_list2, some_list)) 

truediv是一個可調用的形式的'/'運算符,並定義用於這種用法。 map將採用some_list2some_list中的元素並將它們應用於truediv函數;完成調用list以將地圖結果展開爲列表。

+0

我喜歡它!感謝您的詳細解答。 –