[英]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.