Как объединить элементы в списке, как сравнить 2 элемента в списке - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в программировании, у меня есть вопрос:

У меня есть два списка:

list = ["ich", "du", "etc", "."]
abbr = ["etc.", "U.S"]

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

list = ["ich", "du", "etc."]

Моя проблемакак объединить их обоих и как присоединить элемент к следующему элементу.Как я могу использовать здесь следующий элемент вместо "."

for elem in list:
if ''.join((elem, ".")) in abbr:

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

Вы можете сделать что-то вроде ниже

lst = ["ich", "du", "etc", "."]
abbr = ["etc.", "U.S"]

for elem, nextelem in zip(lst[:-1],lst[1:]):
  if elem + nextelem in abbr:
    lst.remove(elem)
    lst.remove(nextelem)
    lst.append(elem + nextelem)

print(lst)

Вывод

['ich', 'du', 'etc.']
0 голосов
/ 19 октября 2018

Вы можете сжать последовательность списка и себя с одним индексом друг от друга, дополнив его дополнительной пустой строкой в ​​конце, чтобы вы могли перебрать последовательность в парах, объединить пару, когда они найдены в списке сокращений.(который более эффективен как набор) и пропустите следующую пару, так как следующая строка уже объединена:

lst = ["ich", "du", "etc", "."]
abbr = {"etc.", "U.S"}
pairs = zip(lst, lst[1:] + [''])
merged = []
for a, b in pairs:
    ab = a + b
    if ab in abbr:
        merged.append(ab)
        next(pairs, None)
    else:
        merged.append(a)
print(merged)

Это выводит:

['ich', 'du', 'etc.']

Обратите внимание, что если вы используетеВ Python 2.7 или более ранних версиях pairs можно инициализировать, добавив вместо него функцию iter:

pairs = iter(zip(lst, lst[1:] + ['']))
0 голосов
/ 19 октября 2018

Вы можете пойти так:

for elem, nextelem in zip(list,list[1:]):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...