亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕斯王 2023-01-04 14:28:44
我想對輸入整數中的每個數字進行平方,但是當我嘗試這樣做時,我的代碼返回原始整數列表,而不是整數的平方列表,為什么? 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)]


查看完整回答
反對 回復 2023-01-04
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

2個原因:

  1. 您正在使用==which 用于檢查相等性而不是=which 用于分配值。

  2. 即使您正在使用=,也不會更新該列表。

下面的代碼應該可以更好地工作


查看完整回答
反對 回復 2023-01-04
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

def square_digits(num):

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


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

return newList



查看完整回答
反對 回復 2023-01-04
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

因為你要返回一個lst.


def square(num):

    lst = [int(x)**2 for x in num]

    return lst


查看完整回答
反對 回復 2023-01-04
  • 4 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號