#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. спасибо.Решил мою проблему