Замена элемента списка на основе другого списка с использованием псевдо-токена - PullRequest
1 голос
/ 24 февраля 2020

Итак, я новичок в Python. Я хочу заменить значения моего списка, если они также находятся в другом списке, и изменить их на указанное значение, псевдо-токен (OOV). Я превратил их в токены и с помощью регулярных выражений немного очистил код. Это мой код:

def replace_words(list1, list2):
  for word in list1:
    for words in list2:
     if word == words:
        word = "OOV"




replace_words(list1, list2)
list1.count("OOV") #this keeps showing 0, so something is wrong...

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

То, что вы делаете неправильно, предполагает, что установка word = "oov" заменит элемент в списке. Это не так, вам нужно заменить доступ к индексу этого списка. Подробнее о здесь

Следующее должно работать

def replace_words(list1, list2):
  for i in range(0,len(list1)-1):#using index
    for words in list2:
     if list1[i] == words:
        list1[i] = "OOV"

replace_words(list1, list2)
list1.count("OOV") 

0 голосов
/ 24 февраля 2020

Ваш код не работает, потому что вы пытаетесь присвоить переменной word новое значение OOV, что хорошо, но на самом деле он не изменяет этот элемент внутри list1. Так что вам нужно изменить элемент на месте внутри list1

Попробуйте это:

def replace_words(list1, list2):
  for idx in range(len(list1)):
      if list1[idx] in list2:
          list1[idx] = "OOV"

И когда вы сейчас выполните >>>list1.count("OOV") это не вернет 0, если есть значение в list1, которое также находится в list2

Надеюсь, это поможет!

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