如何获取子列表中特定单词的索引?
How to get index of a certain words in sublists?
我声明了letters
,哪个有更多的子列表,这些子列表的元素之间至少有“BUILD”或“SHOW”这个词,或者甚至它们的元素之间可以有两个词。
我想要的是在 indexes
中保存找到的第一个单词的索引,例如 letters[0]
它只包含单词“BUILD”,它的索引将是 4
,然后 letters[1]
包含两个词,但是找到的第一个词是“SHOW”,所以我想得到那个索引,其中一个是 5
,然后 letters[2]
哪个包含两个单词也是如此,但是重要的索引是在找到的第一个单词处,因此 return 的索引将是 4
,最后 letters[3]
仅包含“SHOW”,其索引将是3
所以在最后打印 indexes
时,控制台中的结果应该是 [4, 5, 4, 3 ]
我写了这个:
letters = [['letters1','a', 'c', 'b', 'BUILD'],
['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'],
['letters3','R', 'X', 'N', 'BUILD', 'SHOW'],
['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for element in letter:
if element=="BUILD" or element=="SHOW":
indexes.append(letter.index(element))
print(indexes)
然而,控制台中的输出是 [4, 5, 6, 4, 5, 3]
,据我所知,我的代码在找到时获取两个词的索引,但我不知道那是什么,我只想要找到的第一个词的索引。
当条件满足时使用break
跳出循环
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for element in letter:
if element=="BUILD" or element=="SHOW":
indexes.append(letter.index(element))
break # here
print(indexes)
[4, 5, 4, 3]
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes = []
for letter in letters:
for i,let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
代码的简化版本,以便您更好地理解。内部循环由迭代器遍历整个循环的长度。
然后只需使用 'break' / 'continue'。
letters = [['letters1','a', 'c', 'b', 'BUILD'],
['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'],
['letters3','R', 'X', 'N', 'BUILD', 'SHOW'],
['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for i in range(len(letter)):
if letter[i]=="BUILD":
indexes.append(i)
break
elif letter[i]=="SHOW":
indexes.append(i)
break
else:
continue
print(indexes)
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes = []
for letter in letters:
for i,let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
你快到了,只需要 break
我声明了letters
,哪个有更多的子列表,这些子列表的元素之间至少有“BUILD”或“SHOW”这个词,或者甚至它们的元素之间可以有两个词。
我想要的是在 indexes
中保存找到的第一个单词的索引,例如 letters[0]
它只包含单词“BUILD”,它的索引将是 4
,然后 letters[1]
包含两个词,但是找到的第一个词是“SHOW”,所以我想得到那个索引,其中一个是 5
,然后 letters[2]
哪个包含两个单词也是如此,但是重要的索引是在找到的第一个单词处,因此 return 的索引将是 4
,最后 letters[3]
仅包含“SHOW”,其索引将是3
所以在最后打印 indexes
时,控制台中的结果应该是 [4, 5, 4, 3 ]
我写了这个:
letters = [['letters1','a', 'c', 'b', 'BUILD'],
['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'],
['letters3','R', 'X', 'N', 'BUILD', 'SHOW'],
['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for element in letter:
if element=="BUILD" or element=="SHOW":
indexes.append(letter.index(element))
print(indexes)
然而,控制台中的输出是 [4, 5, 6, 4, 5, 3]
,据我所知,我的代码在找到时获取两个词的索引,但我不知道那是什么,我只想要找到的第一个词的索引。
当条件满足时使用break
跳出循环
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for element in letter:
if element=="BUILD" or element=="SHOW":
indexes.append(letter.index(element))
break # here
print(indexes)
[4, 5, 4, 3]
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes = []
for letter in letters:
for i,let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
代码的简化版本,以便您更好地理解。内部循环由迭代器遍历整个循环的长度。
然后只需使用 'break' / 'continue'。
letters = [['letters1','a', 'c', 'b', 'BUILD'],
['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'],
['letters3','R', 'X', 'N', 'BUILD', 'SHOW'],
['letters4','a', 'c','SHOW']]
indexes=[]
for letter in letters:
for i in range(len(letter)):
if letter[i]=="BUILD":
indexes.append(i)
break
elif letter[i]=="SHOW":
indexes.append(i)
break
else:
continue
print(indexes)
letters = [['letters1','a', 'c', 'b', 'BUILD'], ['letters2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['letters3','R', 'X', 'N', 'BUILD', 'SHOW'], ['letters4','a', 'c','SHOW']]
indexes = []
for letter in letters:
for i,let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
你快到了,只需要 break