是否可以在Python中同步列表?

时间:2011-09-16 23:58:35

标签: python list synchronization

例如,如果我有一个单词列表:

Words = ['A', 'list', 'of', 'words']

并想要第二个列表来引用这些单词的长度,我怎么能实现这个目的?我知道我可以做类似的事情:

Lengths = map(lambda w: len(w), Words)
[1, 4, 2, 5]

但每次改变单词时我都必须不断调用该函数。

2 个答案:

答案 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}

但实际上,在你需要时只生成单词的长度没有任何优势。如果您迫切需要它自动更新,我建议最好的选择就是编写自己的类来管理它。