我有这样的代码
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的平方和排序的数字。这是我第一天上巨蟒课,所以温柔点!
在生成结果的列表上构建一个生成器,并将其提供给sorted
以获得基于升序值的列表,例如:
start_list = [5, 3, 1, 2, 4]
square_list = sorted(n**2 for n in start_list)
# [1, 4, 9, 16, 25]
据我所知,在你的情况下,它应该是这样的:
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()
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会删除它,所以现在最好习惯使用括号)