2012-10-27 65 views
-2

我需要一段代碼,可以減少包含在列表中的一個或多個列表的元素。這是一個排序列表。必須繼續減少,直到某個參數大於零。我看到兩種可能的情況,我無法弄清楚適用於兩者的解決方案。我很難爲這個問題制定一個合理的聲明,如果需要的話,我會盡力提供更多細節。謝謝!如何用python遞歸地減少列表中包含的一個/多個列表的元素?

#Scenario 1 
parameter = 5 
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]] 
#reduction code 
data = [[1.99,0],[1.98,0],[1.97,0],[1.96,5]] 

#Scenario 2 
parameter = 0.5 
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]] 
#reduction code 
data = [[1.99,0.5],[1.98,1],[1.97,2],[1.96,6]] 

的程序的流程是本... 採取第一列表的第二元件由1個參數降低變得5 - 1,繼續,取第二列表的第二elemnt由1酌減,參數變成3 ,繼續直到參數爲0(第一個場景)

回答

1

我不理解爲什麼第二方案有[1.99,0.5]對顯示....,但

data_reduced = [] 
for pair in data: 
    if pair[1] < parameter: 
     pair[1] = 0 
    else : 
     pair[1] = parameter 
    data_reduced.append(pair) 
+0

數量參數分佈在多個列表中,它不會直接設置它,因爲元素低於它,而是充當存儲列表需要進行多少還原的銀行... – nebulus

+0

data [0] [1] - 參數= 0.5 – nebulus

1

Scenario-1Scenario-2既是不同的情況。我找不到任何通用的邏輯來爲它構建公式。

0

對於第一種方案:

parameter = 3 
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]] 

# copy of data list 
data_reduced = data[:] 

for n,l in enumerate(data_reduced): 
    if parameter <= 0: 
     break 
    else: 
     l[1] = l[1] - 1 
     parameter -= 1 

print data_reduced 

數據列表中僅有4個元素,你沒有說明,如果該列表是不是像你的榜樣(paramater = 5的參數櫃檯短會發生什麼,但在列表中只有4個元素),因此我將參數減少爲3.第二種情況完全不同,因爲只有第一個列表的第二個元素減少(而不是1)。

相關問題