按列表len排序列表

Day*_*mor 1 python sorting

我正在尝试按len大小排序列表.但我得到一个奇怪的语法错误.我是python的新手,所以我可能做错了什么

代码的相关部分:

 orderedpaths=[]
 if(len(paths)==1):
  orderedpaths=paths
 else: 
  c=0
  while(len(paths)!=0):

   if(c==0):
    smallest=(len(paths[c])
    c+=1

   else:
    if(len[paths[c])<smallest):
     smallest=(len(paths[c]))
     orderedpaths.append(paths[c])
     del paths[c]
     c+=1    

 return orderedpaths
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test.py", line 153
    c+=1
    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.

eum*_*iro 22

你的问题是括号中的数量:

smallest=(len(paths[c])
Run Code Online (Sandbox Code Playgroud)

并在:

if(len[paths[c])<smallest):
Run Code Online (Sandbox Code Playgroud)

还有:

if(len[paths[c])<smallest):
Run Code Online (Sandbox Code Playgroud)

要根据路径长度对路径进行排序,您可以尝试这样做:

orderedpaths = sorted(paths, key=len)
Run Code Online (Sandbox Code Playgroud)

这是文档sorted.

  • 如果你真的想要排序`paths`而不是制作一个排序的副本,你会做`paths.sort(key = len)` (4认同)
  • 这些Python问题就像一场比赛.速度以几十秒为单位.`:)` (2认同)