例如,如果我有一个单词列表:
Words = ['A', 'list', 'of', 'words']
并想要第二个列表来引用这些单词的长度,我怎么能实现这个目的?我知道我可以做类似的事情:
Lengths = map(lambda w: len(w), Words)
[1, 4, 2, 5]
但每次改变单词时我都必须不断调用该函数。
答案 0 :(得分:4)
你可以使用一个类:
class mywords:
def __init__(self, a):
self.words = a
self.length = map(lambda w: len(w), a)
def append(self, string):
self.words.append(string)
self.length.append(len(string))
a = mywords(['A', 'list', 'of', 'words'])
a.append("this")
print a.words
print a.length
这是我第一次使用课程,所以可能有更好的方法。然而,这似乎运作良好。您需要为其他操作定义其他方法,例如insert,remove等。
答案 1 :(得分:3)
在你的建议中,列表理解会更好看,速度更快:
[len(word) for word in words]
你可以像这样使用词典理解:
{word: len(word) for word in words}
但实际上,在你需要时只生成单词的长度没有任何优势。如果您迫切需要它自动更新,我建议最好的选择就是编写自己的类来管理它。