嘿,我是Python的新手,我想完成这个练习但是我得到以下错误:'int'对象没有属性'sort'。 我必须使用for循环从数字列表中取出并使它们全部为正方形,然后按照排序逐个打印出来。 我是否错误地使用了sort命令?或者它甚至不与数字一起工作?我是否必须使用.append()命令将它们全部逐个打印出来? 所以这是我迄今为止的想法代码:
start_list = [5, 3, 1, 2, 4]
square_list = []
for square_list in start_list:
square_list ** 2
print square_list.sort()
答案 0 :(得分:3)
有三个问题:
start_list
分配了square_list
。最终结果是您的square_list
不是列表,因此无法排序。
比较以下代码:
start_list = [5, 3, 1, 2, 4]
square_list = []
for item in start_list:
square_list.append(item ** 2)
这里我们遍历列表,为每个循环取item
。然后,我们将其平方(使用** 2
),然后将其附加到square_list
。
print square_list.sort()
您在列表中使用.sort()
,然后尝试print
返回的值。但.sort()
对列表进行排序,然后返回None
。因此,此行将始终打印None
。要打印已排序的列表,您可以使用sorted()
函数返回已排序的列表,准备传递给print
:
print sorted(square_list)
或者您可以在打印前对列表进行排序:
square_list.sort()
print square_list
答案 1 :(得分:1)
最pythonic的解决方案是
start_list = [5, 3, 1, 2, 4]
square_list = [ i ** 2 for i in start_list ]
print(sorted(square_list))
或oneliner:
print(sorted(i ** 2 for i in [5, 3, 1, 2, 4]))
让我们剖析您的代码:
# here you create an empty list and assign it to
# square list
square_list = []
# yet here you will assign each item of start_list
# to the name square list one by one
for square_list in start_list:
# then you square that number, but it is not stored anywhere
square_list ** 2
# at this point, square_list contains the last element
# of start_list, that is the integer number 4. It does
# not, understandably, have the `.sort` method.
print square_list.sort()
直截了当的解决方法是:
start_list = [ 5, 3, 1, 2, 4 ]
square_list = []
for element in start_list:
square_list.append(element ** 2)
square_list.sort() # note that printing this would say "None"
print square_list
答案 2 :(得分:0)
循环后,square_list
绑定为整数[准确地说,它的值为4
]。
要创建平方数字列表,您可以使用列表推导:
square_list = [i**2 for i in start_list]
然后对其进行排序:
square_list.sort()
答案 3 :(得分:0)
你必须了解循环。
for square_list in start_list:
square_list ** 2
此示例中的 square_list
未引用您创建的空列表。它用作模糊变量从列表中提取值。因此,这只是每次迭代期间列表中的每个值,它们都是整数,因为这就是列表中的内容。
其次,你实际上并没有将方块附加到列表中,你只是计算方块而不对它们做任何事情。最后,sort方法不返回任何内容,它只是在不返回值的情况下更改列表。使用等效的排序方法,该方法不会更改列表但会返回新值。我想你最好用一些代码来理解。
start_list = [5, 3, 1, 2, 4]
square_list = []
# for loop number is ambiguous variable
for number in start_list:
square = number ** 2 # calculate square to add later
square_list.append(square) # add the calculation
print sorted(square_list) # print sorted version