Можно ли синхронизировать списки в Python? - PullRequest
2 голосов
/ 17 сентября 2011

Например, если у меня есть список слов:

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

и хотите, чтобы во втором списке были ссылки на длину этих слов, как мне этого добиться? Я знаю, что мог бы сделать что-то вроде:

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

но мне придется постоянно вызывать эту функцию каждый раз, когда слова изменяются.

Ответы [ 2 ]

4 голосов
/ 17 сентября 2011

Вы можете использовать класс:

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

Это первый раз, когда я использую класс, так что может быть лучше. Однако это, кажется, работает хорошо. Вам необходимо определить другие методы для других операций, таких как вставка, удаление и т. Д.

3 голосов
/ 17 сентября 2011

В вашем предложении было бы лучше взглянуть на понимание списка:

[len(word) for word in words]

Вы могли бы использовать такое толкование, как:

{word: len(word) for word in words}

Но на самом деле, естьв этом нет никакого преимущества по сравнению с генерацией длины слова, когда вам это нужно.Если вам крайне необходимо, чтобы оно автоматически обновлялось, я бы посоветовал лучше всего написать собственный класс для управления им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...