簡體   English   中英

為什么此代碼返回原始列表?

[英]Why is this code returning the original list?

我想對輸入 integer 中的每個數字求平方,但是當我嘗試這樣做時,我的代碼返回原始整數列表,而不是整數平方,為什么?

 def square_digits(num):
    lst = [int(x) for x in str(num)]
    for digit in lst :
        digit == digit **2
    return lst

for循環中的變量digit是列表中值的副本,而不是對其的引用。 修改該值不會修改列表。 (另外,正如其他人指出的那樣,您需要=運算符來修改一個值,而不是== !)

您可以通過以下兩種不同的方式來完成您所追求的目標:

使用枚舉在循環中修改lst

def square_digits(num):
    lst = [int(x) for x in str(num)]
    for i, digit in enumerate(lst):
        lst[i] = digit **2
    return lst

或使用理解來構建並返回正方形列表:

def square_digits(num):
    return [int(x)**2 for x in str(num)]

2個原因:

  1. 您正在使用==來檢查相等性,而不是=來分配值。
  2. 即使您使用=您也不會更新該列表。

下面的代碼應該會更好

def square_digits(num):
lst = [int(x) for x in str(num)]

newList = [digit ** 2 for digit in lst]
return newList

因為您要返回lst

def square(num):
    lst = [int(x)**2 for x in num]
    return lst

暫無
暫無

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

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