如何解决如何获取子列表中某个单词的索引?
我声明了letters
,哪个有更多的子列表,这些子列表的元素之间至少有“BUILD”或“SHOW”这个词,甚至它们的元素之间也可以有这两个词。
我想要的是在 indexes
中保存找到的第一个单词的索引,例如 letters[0]
它只包含单词“BUILD”,它的索引将是 4
,然后letters[1]
包含两个词,但是找到的第一个词是“SHOW”,所以我想得到索引,哪个是 5
,然后是 letters[2]
,哪个也包含两个词,但是重要的索引是找到的第一个单词,所以返回的索引是 4
,最后 letters[3]
只包含“SHOW”,它的索引是 3
所以在最后打印 indexes
时,控制台中的结果应该是 [4,5,4,3 ]
我写了这个:
letters = [['letters1','a','c','b','BUILD'],['letters2','F','P','Z','W','SHOW',['letters3','R','X','N','BUILD','SHOW'],['letters4','SHOW']]
indexes=[]
for letter in letters:
for element in letter:
if element=="BUILD" or element=="SHOW":
indexes.append(letter.index(element))
print(indexes)
但是控制台中的输出是 [4,6,3]
并且我理解我的代码在找到两个单词时获取索引,而我不知道,我只想要找到的第一个单词的索引。>
解决方法
letters = [['letters1','a','c','b','BUILD'],['letters2','F','P','Z','W','SHOW',['letters3','R','X','N','BUILD','SHOW'],['letters4','SHOW']]
indexes = []
for letter in letters:
for i,let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
您就快到了,只需要一个break
当条件满足时使用break
跳出循环
letters = [['letters1','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',let in enumerate(letter):
if let == "BUILD" or let == "SHOW":
indexes.append(i)
break
,
代码的简化版本,以便您更好地理解。内部循环由迭代器在整个循环长度上进行迭代。
然后只需使用“中断”/“继续”。
letters = [['letters1','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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。