我想对输入整数中的每个数字进行平方,但是当我尝试这样做时,我的代码返回原始整数列表,而不是整数的平方列表,为什么? 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
提交
取消