用其他值替换列表数字值



我有这样的代码

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会删除它,所以现在最好习惯使用括号)

相关内容

  • 没有找到相关文章

最新更新