0

我有这个代码

start_list = [5, 3, 1, 2, 4]
square_list = []

for number in start_list:
    number = number**2
    #I bet something should be added here but 
    #I have no idea what that would be
square_list.append(start_list[0])
square_list.append(start_list[1])
square_list.append(start_list[2])
square_list.append(start_list[3])
square_list.append(start_list[4])
square_list.sort()

print square_list

我实际上想创建一个新列表(square_list),其中包括 start_list 平方和排序的数字。这是我在 python 上的第一天,所以要温柔!

4

3 回答 3

4

在生成结果的列表上构建生成器,并将其提供sorted给基于升序值的列表,例如:

start_list = [5, 3, 1, 2, 4]

square_list = sorted(n**2 for n in start_list)
# [1, 4, 9, 16, 25]
于 2013-06-06T15:02:50.677 回答
1

据我了解,在您的情况下,它应该如下所示:

start_list = [5, 3, 1, 2, 4]
square_list = []

for number in start_list:
    number = number**2
    square_list.append(number)
square_list.sort()

但您可以使用其他方法

square_list = sorted(number**2 for number in start_list)

或者

square_list = [number**2 for number in start_list]
square_list.sort()
于 2013-06-06T15:16:12.700 回答
0

Jon Clements 的生成器方法是做到这一点的最好和最 Python 的方法,但是我认为既然你是初学者,那么了解for这样做的循环方式是值得的。你已经清楚地了解了你需要的元素,你只需要以一种新的方式将它们连接在一起。

start_list = [5, 3, 1, 2, 4]
square_list = []

for number in start_list:

到目前为止一切都很好,但你想将这些添加到square_list而不是做number = number**2. 您的代码只是修改一个临时变量,而不是更改任何内容,分配一个新值number不会改变start_list。你接下来想要这个:

  square_list.append(number**2)

然后你只需要像你已经完成的那样排序和打印

square_list.sort()
print(square_list)

print没有括号也可以,但是 Python 3 已经放弃了,所以现在最好习惯使用括号)

于 2013-06-06T15:30:50.173 回答