簡體   English   中英

當我在循環時不使用 integer 時,為什么會出現 integer(類型)錯誤?

[英]Why am I getting an integer (type) error when I am not using an integer when looping?

我在下面有一個解決 TwoSumsII 問題的方法,我們基本上有一個排序整數列表和一個目標,我們想要返回所有加起來為目標的 2 個數字的集合:

nums = [2,7,11,15]
target = 18

comp= dict()          
  
for i in range(len(nums)-1):
    comp = target - nums[i]     
    if nums[i] in comp:
        print(comp[nums[i],i])

    else:
        print("Target cannot be reached")

出於某種原因,我if nums[i] in comp:的錯誤。

我不明白這個錯誤,因為我在這行代碼中看不到 integer 是什么?- 是nums[i]是 integer 嗎?

另外,我對在此解決方案中使用 dict() 有疑問。 我是否正確地說我們正在使用字典,它提供了一種存儲“鍵”-“值”對的方法? 在這種情況下,“鍵”是列表中每個數字的索引, value是 comp,其中comp = target - nums[i]

nums = [2,7,11,15]
target = 18

comp= dict()            
                      
for i in range(len(nums)-1):
    comp[i] = target - nums[i]     

    if comp[i] == nums[i+1]:
        print(i,i+1)

我找到了一個解決方案,它似乎有效!

您的標識符comp最初是一個字典,然后在行中為其分配 integer

comp = target - nums[i]

正如@Cute Panda 指出的那樣,您不能迭代 integer。

我是否正確地說我們正在使用字典,它提供了一種存儲“鍵”-“值”對的方法?

是的。 這就是字典通常所做的。

在這種情況下,“鍵”是列表中每個數字的索引,值是 comp,其中 comp = target - nums[i]?

不,因為你從來沒有向字典本身添加任何東西,事實上,在每次迭代中。 您正在為作為字典的變量 comp 分配一個新的 integer 值,因此在 for 循環中,根本沒有字典!

在這里查看如何將鍵值對添加到字典中。

此外,我不相信如果沒有第二個 for 循環,您的解決方案將無法工作。 您可以對 integer comp 進行二進制搜索(因為數組已排序),或者使用另一個 for 循環對其進行線性搜索。

暫無
暫無

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

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