【问题标题】:How to get index of a certain words in sublists?如何获取子列表中某个单词的索引?
【发布时间】:2021-05-17 03:50:42
【问题描述】:

我声明了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', '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],我理解我的代码是在找到两个单词时获取索引,而我不知道那是什么,我只想要找到的第一个单词的索引。

【问题讨论】:

    标签: python python-3.x list for-loop list-comprehension


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:

      代码的简化版本,以便您更好地理解。内部循环由迭代器在循环的长度上进行迭代。

      然后只需使用“中断”/“继续”。

          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)
      

      【讨论】:

        【解决方案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
        

        【讨论】:

          【解决方案4】:

          满足条件时使用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]
          

          【讨论】:

            猜你喜欢
            • 2023-03-26
            • 2020-12-01
            • 1970-01-01
            • 2015-12-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-17
            • 1970-01-01
            相关资源
            最近更新 更多