Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,将我的列表从其原始形式排序_Python_List_Sorting - Fatal编程技术网

Python,将我的列表从其原始形式排序

Python,将我的列表从其原始形式排序,python,list,sorting,Python,List,Sorting,我一直在搜索,但没有找到任何与我正在寻找的匹配的线程。我想做的是从3个不同的选项中排序,按时间顺序(原始列表)、字母顺序和反向排序。 所有这些,我都已经弄明白了,例如,下面是我的清单: movies = ["Star Wars", "Hamilton", "Fight club", "Beck", "Wallander"] 这是我的代码: def print_movies(): global movies j = 0 while j < 1: pr

我一直在搜索,但没有找到任何与我正在寻找的匹配的线程。我想做的是从3个不同的选项中排序,按时间顺序(原始列表)、字母顺序和反向排序。 所有这些,我都已经弄明白了,例如,下面是我的清单:

movies = ["Star Wars", "Hamilton", "Fight club", "Beck", "Wallander"]
这是我的代码:

def print_movies():
    global movies
    j = 0
    while j < 1:
        print("Hur vill du skriva ut filmerna?")
        print("1. Kronologisk\n2. Alfabetisk stigande\n3. Alfabetisk fallande")
        choice = input()
        if int(choice) == 1:    
            print("Filmer i samlingen just nu:\n")
            for i in movies:
                print(i)
                j = j+1
        elif int(choice) == 2:
            print("Filmer i samlingen just nu:\n")
            movies.sort()
            for i in movies:
                print(i)
                j = j+1
        elif int(choice) == 3:
            print("Filmer i samlingen just nu:\n")
            movies.sort(reverse=True)
            for p in movies:
                print(p)
                j = j+1
        else:
            print("Not a valid option, try again")
当我按下:1时,它仍然在我之前输入的选项2或3中排序

我真的很感激这里的帮助。 谢谢

movies.sort()
修改列表。因此,您将失去原来的订单


尝试在已排序的(电影)中为m添加

只需复制一份列表,因为
movies.sort()
会修改为原始列表

copyMovies = movies[:]
下面是一个例子:

>>> movies = ["Star Wars", "Hamilton", "Fight club", "Beck", "Wallander"]
>>> copyMovies = movies[:]
>>> movies.sort()
>>> movies
['Beck', 'Fight club', 'Hamilton', 'Star Wars', 'Wallander']
>>> copyMovies
['Star Wars', 'Hamilton', 'Fight club', 'Beck', 'Wallander']
>>>

那么你怎么知道它们是按时间顺序排列的呢?您告诉Python对列表进行排序,因此原始顺序消失了。如果您需要原始顺序,请保留一份从未排序的列表副本,或者将信息添加到数据中以按时间顺序排序。对不起,我的英语是指时间顺序,我指的是它在第一个列表中的顺序。列表中的原始顺序。这是因为您正在就地排序
。也就是说,修改原始列表。对于按时间顺序排列的,您希望保持原始顺序。因此,对于选项2和3,不要使用
movies.sort
,而是使用
new\u movies=sorted(movies)
。选项1仍然可以从电影本身显示。
排序
修改列表就位。您可以复制原始列表。当您需要“按时间顺序”的电影时,您可以返回复制的列表。为什么有
全球电影
?这与你的要求无关,但我很确定它在这方面没有任何作用。谢谢!谢谢你!
>>> movies = ["Star Wars", "Hamilton", "Fight club", "Beck", "Wallander"]
>>> copyMovies = movies[:]
>>> movies.sort()
>>> movies
['Beck', 'Fight club', 'Hamilton', 'Star Wars', 'Wallander']
>>> copyMovies
['Star Wars', 'Hamilton', 'Fight club', 'Beck', 'Wallander']
>>>