python 'int' 对象没有属性 'sort'
python 'int' object has no attribute 'sort'
嘿,我是 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()
最pythonic的解决方案是
start_list = [5, 3, 1, 2, 4]
square_list = [ i ** 2 for i in start_list ]
print(sorted(square_list))
或一线:
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
循环后你的 square_list
被绑定到整数 [准确地说,它的值是 4
]。
要创建平方数列表,您可以使用列表理解:
square_list = [i**2 for i in start_list]
然后排序:
square_list.sort()
存在三个问题:
- 您在 for 循环中从
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()
将列表排序 到位 然后 returns None
。所以这一行将始终打印 None
。要打印排序列表,您可以使用 sorted()
函数,其中 returns 排序列表,准备传递给 print
:
print sorted(square_list)
或者您可以在打印前对列表进行排序:
square_list.sort()
print square_list
你必须了解for循环。
for square_list in start_list:
square_list ** 2
本例中的 square_list
不是指您创建的空列表。它用作歧义变量以从列表中提取值。因此,这只是每次迭代期间列表中的每个值,它们都是整数,因为这就是您的列表中的内容。
其次,您实际上并没有将正方形附加到列表中,您只是在计算正方形而不对它们执行任何操作。最后,sort 方法没有 return 任何东西,它只是在没有 return 值的情况下更改列表。使用不改变列表但 return 一个新值的等效排序方法。我想你最好通过一些代码来理解。
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
嘿,我是 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()
最pythonic的解决方案是
start_list = [5, 3, 1, 2, 4]
square_list = [ i ** 2 for i in start_list ]
print(sorted(square_list))
或一线:
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
循环后你的 square_list
被绑定到整数 [准确地说,它的值是 4
]。
要创建平方数列表,您可以使用列表理解:
square_list = [i**2 for i in start_list]
然后排序:
square_list.sort()
存在三个问题:
- 您在 for 循环中从
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()
将列表排序 到位 然后 returns None
。所以这一行将始终打印 None
。要打印排序列表,您可以使用 sorted()
函数,其中 returns 排序列表,准备传递给 print
:
print sorted(square_list)
或者您可以在打印前对列表进行排序:
square_list.sort()
print square_list
你必须了解for循环。
for square_list in start_list:
square_list ** 2
本例中的 square_list
不是指您创建的空列表。它用作歧义变量以从列表中提取值。因此,这只是每次迭代期间列表中的每个值,它们都是整数,因为这就是您的列表中的内容。
其次,您实际上并没有将正方形附加到列表中,您只是在计算正方形而不对它们执行任何操作。最后,sort 方法没有 return 任何东西,它只是在没有 return 值的情况下更改列表。使用不改变列表但 return 一个新值的等效排序方法。我想你最好通过一些代码来理解。
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