猿问

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

我想对输入整数中的每个数字进行平方,但是当我尝试这样做时,我的代码返回原始整数列表,而不是整数的平方列表,为什么?


 def square_digits(num):

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

    for digit in lst :

        digit == digit **2

    return lst


慕斯王
浏览 169回答 4
4回答

慕田峪7331174

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)]

哔哔one

2个原因:您正在使用==which 用于检查相等性而不是=which 用于分配值。即使您正在使用=,也不会更新该列表。下面的代码应该可以更好地工作

波斯汪

def square_digits(num):lst = [int(x) for x in str(num)]newList = [digit ** 2 for digit in lst]return newList

GCT1015

因为你要返回一个lst.def square(num):    lst = [int(x)**2 for x in num]    return lst
随时随地看视频慕课网APP

相关分类

Python
我要回答