如何附加一个值来替换列表中的多个元素?

时间:2019-04-16 07:53:06

标签: python list replace append

我正在尝试创建一个搜索系统,该系统查找包含多个AND,OR和括号的搜索关键字。我现在想要做的是用布尔值替换括号。 因此,如果我有一个列表[“ A”,“或”,“(”,“ B”,“和”,“ C”,“)”],我想将此列表更改为[“ A”,“或” “,是]。

首先,我尝试了del关键字,然后像下面的代码一样附加布尔值。这仅适用于此示例。但是我可能在列表的前面或中间有括号,在这种情况下它不起作用。(因为append关键字总是将元素添加到末尾)

我也尝试了replace关键字,但这返回了输出[“ A”,“ or”,“ T”,“ r”,“ u”,“ e”]

如何将[“(”,“ B”,“和”,“ 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))

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您的代码有点难以阅读,但是我认为它的唯一问题是结尾处的追加,因为您不知道结尾括号是句子结尾的结尾会影响您的逻辑,相反,您应该插入和追加操作不会返回任何内容,因此此行:

search = search.append(bool(bracket))

应该是

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

我也不确定您是如何成功地做到明智的,这只有在您进行list("true")

时才会发生