我有这段代码
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上的第一天,所以要温柔!
答案 0 :(得分:4)
在列表上构建生成结果的生成器,并将其提供给sorted
以获取基于升序值的列表,例如:
start_list = [5, 3, 1, 2, 4]
square_list = sorted(n**2 for n in start_list)
# [1, 4, 9, 16, 25]
答案 1 :(得分: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()
答案 2 :(得分:0)
Jon Clements的生成器方法是做到这一点的最好和最pythonic方式,但是我认为,因为你是初学者,所以值得理解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删除,所以现在最好习惯使用括号。)