Как отфильтровать строковые элементы в списке, которые встречаются в более длинных элементах в том же списке Python?

PHP cli использует другой ini, чем PHP apache.

Когда вы используете Symfony с обеих консолей (команд) и apache (приложение), вы должны убедиться, что оба ini-файла правильно настроены для Symfony .

В браузере вы можете перейти к web/config.php, чтобы увидеть отчет Symfony о ваших настройках PHP и т. д.

3
задан Hiadore 4 March 2019 в 04:14
поделиться

2 ответа

Это решение использует грубую силу, чтобы сравнить каждую строку с оставшейся (нарезая массив), просто для удовольствия написать один вкладыш.

Он не удаляет строку, если порядок обратный, например "hair bright" не рассматривается как подпункт "bright hair dryer".

[ e for i, e in enumerate(mylist) if not any([ e in s for s in mylist[:i] + mylist[i+1:] ]) ]

   #=> ['love', 'bright light', 'bright hair dryer']
0
ответ дан iGian 4 March 2019 в 04:14
поделиться

Вы можете перебирать список, отсортированный по длинам фраз в обратном порядке, и добавлять каждую возможную подфразу в набор, чтобы можно было использовать этот набор, чтобы проверить, является ли текущая фраза подфраза предыдущая, более длинная фраза:

output = []
seen = set()
for phrase in sorted(l, key=len, reverse=True):
    words = tuple(phrase.split())
    if words not in seen:
        output.append(phrase)
    seen.update({words[i: i + n + 1] for n in range(len(words)) for i in range(len(words) - n)})

так, что дано:

l = ['love', 'hair', 'light', 'hair dryer', 'bright light', 'bright hair dryer']

output становится:

['bright hair dryer', 'bright light', 'love']
0
ответ дан blhsing 4 March 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: