簡體   English   中英

for循環在元組中如何工作

[英]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

使用您的代碼段,我們可以清理幾件事,以使我們感興趣的行為更加清晰。

  1. 我們可以刪除循環的內容,而只需打印值
  2. 我們可以刪除不再使用的第二個元組和其他變量

離開我們:

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

您現在可以清楚地看到它的作用-依次遍歷列表的每個元組,並將元組的第一個和第二個值提取到indexratio變量中。

嘗試對此進行試驗-如果您制作1號或3號元組之一,會發生什么? 如果僅在循環中指定一個變量而不是兩個變量,該怎么辦? 您可以指定兩個以上的變量嗎?

for循環遍歷數組中的每個元組,為其分配零索引到index和一個索引到比率。

然后,它檢查weight_cost中的對應索引(它是一個元組),並檢查該元組的零索引。 它增加了權重,它小於或等於容量,我們進入if塊。

同樣,像以前一樣,索引用於訪問其他列表中的特定項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM