выбор подходящих вариантов из списка строк - PullRequest
2 голосов
/ 21 октября 2019

У меня есть список предложений. Например:

x = ['Mary had a little lamb', 
           'Jack went up the hill', 
           'Jill followed suit',    
           'i woke up suddenly',
           'I just missed the train',
           'it was a really bad dream']

Я хочу выбрать те варианты, в которых предпоследнее слово не является 'the'. Как я могу сделать это на Python 3? Я попробовал это:

l = []
for i in x:
    for k in i: 
        if i.index(k) != (len(i) -2):
             l.append(' '.join(i))

Я работаю с небольшими списками, но не с огромными (несколько тысяч элементов)

Ответы [ 4 ]

4 голосов
/ 21 октября 2019

Вы можете использовать понимание списка с помощью split, чтобы разделить предложение на слова, а затем использовать индекс [-2], чтобы проверить предпоследний элемент.

>>> [s for s in x if s.split()[-2] != "the"]
['Mary had a little lamb',
 'Jill followed suit',
 'i woke up suddenly',
 'it was a really bad dream']
3 голосов
/ 21 октября 2019

Вы можете использовать метод filter() и пройти через лямбду, которая вернет true для строк, которые не имеют "the" в качестве второго последнего слова:

x = ['Mary had a little lamb', 
           'Jack went up the hill', 
           'Jill followed suit',    
           'i woke up suddenly',
           'I just missed the train',
           'it was a really bad dream']

res = list(filter(lambda str : str.split()[-2] != "the", x)) 
print(res) # ['Mary had a little lamb', 'Jill followed suit', 'i woke up suddenly', 'it was a really bad dream']
2 голосов
/ 21 октября 2019
x = ['Mary had a little lamb', 
           'Jack went up the hill', 
           'Jill followed suit',    
           'i woke up suddenly',
           'I just missed the train',
           'it was a really bad dream']

res =[sentence for sentence in x if 'the'!= sentence.split()[-2]]

print(res)

выход

['Mary had a little lamb', 'Jill followed suit', 'i woke up suddenly', 'it was a really bad dream']
1 голос
/ 21 октября 2019
x = ['Mary had a little lamb', 
           'Jack went up the hill', 
           'Jill followed suit',    
           'i woke up suddenly',
           'I just missed the train',
           'it was a really bad dream']

result = [y for y in x if y.split()[-2].lower() != 'the']

print(result)
# ['Jack went up the hill', 'I just missed the train']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...