在列表中根据变量的长度找到索引项

3

我有两个列表:

list_one = ['I', 'walk','on','the','street','','','','']
list_two = ['','','','','','with','my','pajamas','on']

对于这两个列表,我的目标是不同的。对于list_one,我想找到长度大于0的最后一项。对于list_two,我想找到长度大于0的第一个变量的索引。

现在我已经创建了两个函数:

def index_last_long(sentence):
  for index, word in enumerate(sentence):
    if len(word) == 0:
      return index-1

def index_first_long(sentence):
  for index, word in enumerate(sentence):
    if len(word) > 0:
      return index

这种方法是可行的。但我认为可能有其他方法可以用更少的代码完成相同的任务。

谁知道这样的方法?

1个回答

1
您可以这样做:
last = next((i for i, x in enumerate(reversed(list_one)) if len(x) > 0), None)
first = next((i for i, x in enumerate(list_two) if len(x) > 0), None)

如果这些索引不存在,则返回None。可以随意修改该值,例如使用-1或其他值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接