[英]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個原因:
==
來檢查相等性,而不是=
來分配值。=
您也不會更新該列表。下面的代碼應該會更好
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.