舉例來說,如果我有一個單詞列表:是否有可能在Python中同步列表?
Words = ['A', 'list', 'of', 'words']
,並希望第二列表引用的那些話的長度,我該如何實現這一目標?我知道我可以這樣做:
Lengths = map(lambda w: len(w), Words)
[1, 4, 2, 5]
但我必須不斷地調用該函數,每次改變單詞。
舉例來說,如果我有一個單詞列表:是否有可能在Python中同步列表?
Words = ['A', 'list', 'of', 'words']
,並希望第二列表引用的那些話的長度,我該如何實現這一目標?我知道我可以這樣做:
Lengths = map(lambda w: len(w), Words)
[1, 4, 2, 5]
但我必須不斷地調用該函數,每次改變單詞。
你可以使用一個類:
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
這是我第一次使用一個類,所以有可能是一個更好的辦法。但是,這似乎運作良好。您需要爲其他操作定義其他方法,例如插入,刪除等。
我認爲這應該工作。謝謝! –
在您的建議列表理解會更好看,更快:
[len(word) for word in words]
你可以使用字典理解,像這樣:
{word: len(word) for word in words}
但事實上,目前在沒有優勢那就是在你需要的時候生成單詞的長度。如果你迫切需要它自動更新,我建議最好的選擇就是編寫你自己的類來管理它。
在我正在處理的上下文中,這有點方便 - 字長只是我想要對同步列表做的一個佔位符。如果不可能,那不是什麼大問題,但就像我說的那樣,這會有所幫助。 –
也許某個班級可以讓您這樣做。 – Benjamin
你能否詳細說明一下?我是一個Python新手。 :p –
我想他想說你需要使用'list'的子類,所以當你改變'Words'時你可以自動更新'Lengths'。如果你的問題是「是否有內置的方式」,答案是否定的。 – agf