为了账号安全,请及时绑定邮箱和手机立即绑定

为什么此代码返回原始列表?

为什么此代码返回原始列表?

慕斯王 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 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信