附加列表问题

时间:2021-01-29 10:10:02

标签: python list

所以基本上我在这里要做的是扫描单词列表并检查它们在字典中的相应项目是否在 it_all_paragraphs 字符串中。

下面的所有内容都无关紧要,问题出在前 6 行代码中,如果我执行 .append(list) 然后我清除该列表基本上主列表也被清除。 通过一些研究,我意识到这种情况正在发生,因为它只是一个指针,并没有真正将这些项目添加到列表中。

我需要做的基本上是每次索引“i”增加时,只需将我在列表中找到的所有字符串列表附加到列表中,并且对于将来会再次找到的新列表列表。

假设想要的结果应该是这样的:

[["a", "b"], ["c", "d", "e",] , ["f", "g"]]

但是如果没有第 3 行到第 7 行的部分(必须修复),我会得到类似的信息:

["a" , "b" , "c" , "d" , "e" , "f" , "g"] 这对于我稍后必须做的事情来说是混乱的。有什么建议吗?

for i in range(len(gr_completed_sequences)):

    if len(traduzione_it) == 0:                      #Stuff i'm trying to make work
        pass
    else:        
        ordered_traduzione_it.append(traduzione_it)
        traduzione_it.clear()
                                                     #From here on doesn't really matter
    words = gr_completed_sequences[i].split()
    for c in range(len(words) -1, -1, -1):
        gr_clean_word = words[c].strip(".,:;|?")
        if len(gr_it[gr_clean_word]) == 1:
            traduzione = "".join(gr_it[gr_clean_word])
            if traduzione in it_all_paragraphs:
                traduzione_it.append(traduzione)
                gr_completed_sequences[i] = words
                continue
            else:
                words.pop(c)
                gr_completed_sequences[i] = words

1 个答案:

答案 0 :(得分:1)

这是预期的行为,因为两者都是同一个对象的别名,可以通过以下示例进行验证:

tr = [1, 2]
or_tr = [[3]]
or_tr.append(tr)
print(or_tr)
tr.clear()
print(or_tr)

输出:

[[3], [1, 2]]
[[3], []]

您可以通过创建列表的 copy 并将其附加到结果列表来避免这种情况,如下所示:

tr = [1, 2]
or_tr = [[3]]
or_tr.append(tr.copy())
print(or_tr)
tr.clear()
print(or_tr)

输出:

[[3], [1, 2]]
[[3], [1, 2]]