变量覆盖的问题
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
list 结构为 [(单词1长度,单词1),(单词2长度,单词2),...]
e即为每个具体的(单词n长度,单词n)
length, word = e,即为
length, word = (单词n长度,单词n)。
等同于:
length = 单词n长度
word = 单词n
大家的解释都很棒; 这里仅提供一个more pythonic的功能实现代码参考:
>>> words = ['abcd', 'ab', 'defghi']
>>> lst = sorted(words,
... key=lambda x: len(x),
... reverse=True)
lst.append((len(word), word))
这里把元组放到lst
e = ((len(word), word))
length, word=e
这个在python里叫解包,一对一赋值,就是把length=len(word)
也就是length=e[0], word=e[1]