Как я могу добавить значение, заменяющее несколько элементов в списке?

#python #list #replace #append

#python #Список #заменить #добавить

Вопрос:

Я пытаюсь создать поисковую систему, которая находит ключевое слово для поиска, содержащее несколько И, ИЛИ и скобки. То, что я пытаюсь сделать сейчас, — это заменить скобки логическими значениями. Поэтому, если у меня есть список [«A», «или», «(«, «B», «и», «C», «)»] , я хочу изменить этот список на [«A», «или», True].

Сначала я попробовал использовать ключевое слово del, а затем добавил логическое значение, как показано в приведенном ниже коде. Это работает в этом единственном примере. Однако у меня может быть скобка в начале или в середине списка, и в этом случае это не работает.(потому что ключевое слово append всегда добавляет элементы в конец)

Также я попробовал ключевое слово replace, но оно вернуло вывод [«A», «or», «T», «r», «u», «e»]

Как я могу заменить [«(«, «B», «and», «C», «)»] на True?

 sentence = ["B", "C", "D"]
search = ["A", "or", "(", "B", "and", "C", ")"]
if "(" in search:
    start = search.index("(")
    end = search.index(")")
    bracket = search[start   1 : end]

    if "and" in bracket:
        index_of_and = bracket.index("and")
        if bracket[index_of_and - 1] and bracket[index_of_and   1] in sentence:
            print("both in")
            bracket = 'True'
        else:
            print("only one or nothing in")
            bracket = 'False'
    elif "or" in bracket:
        index_of_or = bracket.index("or")
        if   bracket[index_of_or -1]  in sentence or  bracket[index_of_or  1]   in sentence:
            bracket = 'True'
        else:
            bracket = 'False'
    else:
        if bracket[0] in sentence:
            bracket = 'True'
        else:
            bracket = 'False'

    del search[start:end 1]
    search = search.append(bool(bracket))
 

Ответ №1:

 del search[start - 1: end   1]
search.insert(start - 1, bracket)
 

Комментарии:

1. спасибо. Решена моя проблема

Ответ №2:

ваш код немного сложен для чтения, но я думаю, что его единственная проблема — добавление в конце, поскольку вы не знаете, что закрывающая скобка — это конец предложения, добавление может исказить вашу логику, вместо этого вы должны вставить, и операция добавления ничего не возвращает, поэтому эта строка:

 search = search.append(bool(bracket))
 

должно быть

 search.insert(start - 1, bool(bracket))
 

Я также не уверен, как вам удалось сделать так, чтобы true было разделено на буквы, это должно произойти только в том случае, если вы это сделаете list("true")

Комментарии:

1. спасибо.Решил мою проблему