繁体   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