一个简单的python程序,利用DSU模式把words里面的单词按照长度排序。下面的程序中注释的那句话到底有什么

2024年11月14日 13:13
有4个网友回答
网友(1):

变量覆盖的问题

words = ['abcd', 'ab', 'defghi']

lst = []

for word in words:
   #这里对word变量进行了幅值,历遍后word等于最后一个值,就是'defghi'
   lst.append((len(word), word))

lst.sort(reverse = True)

sort_words = []

for e in lst:
   #这局的意思是将排序后的变量进行解包
   #word变量将覆盖上面的word变量,没有这一句,word的值就不会改变
   length, word = e                  //作用到底是什么?????????

   sort_words.append(word)

print sort_words

网友(2):

list 结构为 [(单词1长度,单词1),(单词2长度,单词2),...]
e即为每个具体的(单词n长度,单词n)
length, word = e,即为
length, word = (单词n长度,单词n)。
等同于:
length = 单词n长度
word = 单词n

网友(3):

大家的解释都很棒; 这里仅提供一个more pythonic的功能实现代码参考:

>>> words = ['abcd', 'ab', 'defghi']
>>> lst = sorted(words,
...              key=lambda x: len(x),
...              reverse=True)

网友(4):

lst.append((len(word), word))
这里把元组放到lst
e = ((len(word), word))
length, word=e
这个在python里叫解包,一对一赋值,就是把length=len(word)
也就是length=e[0], word=e[1]