栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在列表列表中找到项目的索引

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在列表列表中找到项目的索引

我会做这样的事情:

[(i, colour.index(c)) for i, colour in enumerate(colours) if c in colour]

这将返回一个元组列表,其中第一个索引是第一个列表中的位置,第二个索引是第二个列表中的位置(注意:

c
您要查找的颜色,即
"#660000"
)。

对于问题中的示例,返回值为:

[(0, 0)]

如果您只需要懒惰地找到找到颜色的第一个位置,则可以使用以下方法:

next(((i, colour.index(c))      for i, colour in enumerate(colours)      if c in colour),     None)

这将返回找到的第一个元素的元组,或者

None
如果找不到元素(您也可以删除
None
上面的参数,
StopIteration
如果找不到元素,则将引发异常)。

编辑:正如@RikPoggi正确指出的那样,如果匹配数很高,这将带来一些开销,因为

colour
要对其进行两次迭代查找
c
。我认为这对于少量匹配并在单个表达式中给出答案是合理的。但是,为避免这种情况,您还可以使用相同的思想定义方法,如下所示:

def find(c):    for i, colour in enumerate(colours):        try: j = colour.index(c)        except ValueError: continue        yield i, jmatches = [match for match in find('#660000')]

请注意,由于

find
是生成器,因此您可以像上面的示例中那样实际使用它,
next
以在第一个比赛时停止并跳过进一步的查找。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号