我想對輸入整數中的每個數字進行平方,但是當我嘗試這樣做時,我的代碼返回原始整數列表,而不是整數的平方列表,為什么? def square_digits(num): lst = [int(x) for x in str(num)] for digit in lst : digit == digit **2 return lst
4 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
digit循環中的變量for是列表中值的副本,而不是對其的引用。修改該值不會修改列表。(另外,正如其他人所指出的,您需要=操作員修改一個值,而不是==!)
您可以通過以下兩種不同的方式完成您的目標:
使用枚舉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)]

波斯汪
TA貢獻1811條經驗 獲得超4個贊
def square_digits(num):
lst = [int(x) for x in str(num)]
newList = [digit ** 2 for digit in lst]
return newList
添加回答
舉報
0/150
提交
取消