我很难理解如何在“相同”元素上创建嵌套for循环。
以下是我的代码的一部分:
for elem1 in sentence2:
for elem2 in bigram_list:
if (elem1 == vocab_list[int(elem2[0]) - 1]):
file.write("elem1: " + elem1 + "\n")
file.write("vocab: " + vocab_list[int(elem2[0]) - 1] + "\n")
index3 = index3 + 1
for (sameElem2 in bigram_list):
if (sentence2[index3] == vocab_list[int(sameElem2[1]) - 1]
问题是,bigram_list中的每个elem2都包含索引elem2 [0],elem2 [1],elem2 [2]
我正在尝试检查bigram_list中elem [0]的元素是否等于我的sentence2_list中的另一个元素,如果是,我希望能够开始循环遍历下一个索引,即elem2 [1 ]但仍然在bigram_list中的相同元素,并检查它是否等于sentence2_list中的下一个元素
但那就是我被困住的地方。我想前进,而不是倒退:)
答案 0 :(得分:3)
如果我理解正确,您需要随时更改迭代的起点。如果是这样,你可以通过一些简单的切片实现这一点:
for i, elem1 in enumerate(bigram_list):
for elem2 in bigram_list[i:]:
# Do something
对于一些解释,enumerate
是一个python函数,它只返回当前使用的索引和单个元组中的元素,这意味着你可以像上面那样访问这两个元素。
答案 1 :(得分:0)
您可以改为使用索引:
for elem1 in sentence2:
for i in range(0,len(bigram_list)):
elem2 = int(bigram_list[i])-1
if (elem1 == vocab_list[elem2]):
file.write("elem1: " + elem1 + "\n")
file.write("vocab: " + vocab_list[elem2] + "\n")
if i+1 < len(bigram_list):
nextElem2 = int(bigram_list[i+1])-1
index3 = index3 + 1 # Make sure that you want to increment 'index3' here and not inside the 'if'
if sentence2[index3] == vocab_list[nextElem2]:
...