Я хотел бы сделать понимание списка, поскольку использование цикла for замедлит работу программы, поэтому я хочу преобразовать его в списки.Однако я хотел, чтобы он возвращал 3 значения, в основном i, ii и word.Я попробовал свой метод, но я получил такие ошибки, как:
Ошибки:
ValueError: not enough values to unpack (expected 3, got 0)
Кратко о моих типах кодов:
words: Is a list[List[string]] # [["I","have","something","to","buy"]]
word: is a word in string type
Код:
i, ii, word = [[i, ii, word] for i, w in enumerate(words) for ii, ww in
enumerate(w) for wwd in ww if word == wwd]
Ожидаемый результат:
Например, список i будет содержать индекс для слов, список ii будет содержать индекс для w, а слово - это просто список строк, похожих на wwd.
i = [0,1,2,3,4,5,6,7,8,9,10 ~] # this index should be relevant to the matching of wwd == word
ii = [0,1,2,3,4,5,6,7,8,9,10 ~] # this index should be relevant to the matching of wwd == word
word = ["I", "have", "something"] # this is received when comparing the wwd with word
#Another example: i= 2, ii= 4, word = "have" and then store it to the variables for each matching of word.
Мне интересно, есть ли более короткая версия и как я могу решить мою текущую проблему?
Полная версия моей проблемы:
Мой код:
wordy = [['I', 'have', 'something', 'to', 'buy', 'from', 'home', ',']]
key = {'I': 'We', 'king': 'man', 'value': 'time'}
a = []
def foo(a,b,c): return a,b,c
for ll in key.keys():
for ii, l in enumerate(wordy):
for i, word in enumerate(l):
for wordd in word:
if ll == wordd:
a.append(list(zip([ii, i, ll])))
for x in a:
i, ii, ll = foo(*x)
print(i,ii,ll)
for ll in key.keys():
a = [[i, ii, ll]for i, words in enumerate(wordy) for ii, word in enumerate(words) for wordd in word if ll == wordd]
print(a)
for x in a:
i, ii, ll = foo(*x)
print(i, ii, ll)
Мой текущий вывод:
0 0 I
[]
0 0 value
Ожидаемый вывод:
0 0 I
[]
0 0 I
Я не знаю, почему при использовании списочных представлений значение «ll» становится другим.