[英]How does a for loop work in tuples
我是python的新手,很難理解以下代碼。 如果有人可以給出解釋,那就太好了。 我有兩個元組。 具體來說,我無法理解for循環在這里的工作方式。 weight_cost [index] [0]是什么意思。
ratios=[(3, 0.75), (2, 0.5333333333333333), (0, 0.5), (1, 0.5)]
weight cost=[(8, 4), (10, 5), (15, 8), (4, 3)]
best_combination = [0] * number
best_cost = 0
weight = 0
for index, ratio in ratios:
if weight_cost[index][0] + weight <= capacity:
weight += weight_cost[index][0]
best_cost += weight_cost[index][1]
best_combination[index] = 1
當您嘗試理解一段代碼時,一種好的做法是刪除不相關的部分,以便您可以看到自己關心的代碼在做什么。 這通常稱為MCVE 。
使用您的代碼段,我們可以清理幾件事,以使我們感興趣的行為更加清晰。
離開我們:
ratios=[(3, 0.75), (2, 0.5333333333333333), (0, 0.5), (1, 0.5)]
for index, ratio in ratios:
print('index: %s, ratio %s' % (index, ratio))
現在我們可以將其放入REPL並進行實驗:
>>> ratios=[(3, 0.75), (2, 0.5333333333333333), (0, 0.5), (1, 0.5)]
>>> for index, ratio in ratios:
... print('index: %s, ratio %s' % (index, ratio))
...
index: 3, ratio 0.75
index: 2, ratio 0.5333333333333333
index: 0, ratio 0.5
index: 1, ratio 0.5
您現在可以清楚地看到它的作用-依次遍歷列表的每個元組,並將元組的第一個和第二個值提取到index
和ratio
變量中。
嘗試對此進行試驗-如果您制作1號或3號元組之一,會發生什么? 如果僅在循環中指定一個變量而不是兩個變量,該怎么辦? 您可以指定兩個以上的變量嗎?
for循環遍歷數組中的每個元組,為其分配零索引到index
和一個索引到比率。
然后,它檢查weight_cost中的對應索引(它是一個元組),並檢查該元組的零索引。 它增加了權重,它小於或等於容量,我們進入if塊。
同樣,像以前一樣,索引用於訪問其他列表中的特定項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.