Python - 如何对列表进行排序

时间:2014-11-09 07:49:31

标签: python arrays list sorting reverse

基本上我所要做的就是让列表以不同的方式排序和显示。但是在我做第一次打印后,它似乎会得到“TypeError:'int'对象不可调用”。我假设那是因为我在列表的末尾并且需要在开始时重新启动?不知道该怎么做或者这是原因。

    ##vars

Index = 0
NumSize = 0
NumInput = 0
ManNum = 0

##Asking for list size

NumSize = int(input("How many numbers would you like to enter?:\n====>"))

##Declaring list

Numbers = [0] * NumSize

##Collecting data

for Index in range(NumSize):
    NumInput = int(input("Please enter a number:\n====>"))
    Numbers[Index] = NumInput

##Getting highest number

MaxNum = max(Numbers)

##Printing list

print("::::The numbers you entered were::::")
for Numbers in Numbers:
    print(Numbers)

##Sorting list small to large

Numbers.sort()
print("::::The numbers while sorted::::")
for Numbers in Numbers:
    print(Numbers)

##Sorting list large to small

Numbers.reverse()
print("::::The numbers reversed::::")
for Numbers in Numbers:
    print(Numbers)

##Printing largest number

print("::::Largest number::::\n",
       MaxNum)

5 个答案:

答案 0 :(得分:5)

您使用

for Numbers in Numbers:
    print(Numbers)

您不应将迭代变量命名为与集合相同的名称

试试这个

for number in Numbers:
    print(number)

答案 1 :(得分:2)

在覆盖后面的

时,不要调用与集合同名的迭代器
for Numbers in Numbers:

这会摧毁"数字"数组和循环之后"数字"是"数字"的最后一个元素。代替。将所有循环更改为

for number in Numbers:

答案 2 :(得分:0)

Numbers循环中使用任何内容代替for, 这样

for i in Numbers:`
    dosomething

如果您打印数字,那么您将看到它只包含您在列表中插入的最后一个数字。

print Numbers
>>> #last Number of List         

答案 3 :(得分:0)

在循环中使用与Numbers不同的变量。您还可以使用sorted(Numbers)reversed(Numbers)来减少必须执行的变量分配。如果您不打算重复使用MaxNum,也可以直接在print中执行此操作。

这是完全更新的计划:

##vars
Index = 0
NumSize = 0
NumInput = 0

##Asking for list size
NumSize = int(input("How many numbers would you like to enter?:\n====>"))

##Declaring list
Numbers = [0] * NumSize

##Collecting data
for Index in range(NumSize):
    NumInput = int(input("Please enter a number:\n====>"))
    Numbers[Index] = NumInput

##Printing list
print("::::The numbers you entered were::::")
for number in Numbers:
    print(number)

##Sorting list small to large
print("::::The numbers while sorted::::")
for number in sorted(Numbers):
    print(number)

##Sorting list large to small
print("::::The numbers reversed::::")
for number in reversed(Numbers):
    print(number)

##Printing largest number
print("::::Largest number::::")
print max(Numbers)

答案 4 :(得分:-1)

上面已经给出了答案。但出于解释的目的,这里出了什么问题。

>>> Numbers = [1, 4 , 10, 8]    #This is creating a list.
>>> for Numbers in Numbers:     #Now when you are iterating it definately gives the result
...     print(Numbers)
... 
1
4
10
8
>>> Numbers                     #But now check what is in Numbers
8
>>> 

你不想要上述内容。

注意:>>>是python解释器提示

如评论中所述,请以pythonic方式开始编写代码。 这是:

  1. 您不需要像以前那样初始化变量。您只需在使用它们之前分配它们。
  2. 当您要求输入时。你确实需要去做list[index]而不是append方法。