首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何知道子列表中元素的索引

如何知道子列表中元素的索引
EN

Stack Overflow用户
提问于 2016-12-03 23:04:11
回答 4查看 90关注 0票数 4

如何知道子列表中元素的索引?对于没有嵌套的列表,使用A similar question was asked here

如下所示:

代码语言:javascript
复制
L=[[1, 2, 3], [4, 5, 6]]

当元素为3时我希望作为输出的内容

代码语言:javascript
复制
output=[0][2]
EN

回答 4

Stack Overflow用户

发布于 2016-12-03 23:10:20

试试这个:

代码语言:javascript
复制
def get_sublist_index(lists, item):
    for sublist in lists:
        if item in sublist:
            return lists.index(sublist), sublist.index(item)

>>> L=[[1,2,3],[4,5,6]]
>>> get_sublist_index(L, 3)
(0, 2)

或者获取每一件物品:

代码语言:javascript
复制
def get_sublist_index(lists, item):
    for sublist in lists:
        if item in sublist:
            yield lists.index(sublist), sublist.index(item)

创建一个generator

代码语言:javascript
复制
>>> L=[[1,2,3],[4,3,6]]
>>> get_sublist_index(L, 3)
<generator object get_sublist_index at 0x1056c5e08>
>>> [i for i in get_sublist_index(L, 3)]
[(0, 2), (1, 1)]

或者如果你不想要一个发电机:

代码语言:javascript
复制
def get_sublist_index(lists, item):
    outList = []
    for sublist in lists:
        if item in sublist:
            outList.append((lists.index(sublist), sublist.index(item)))
    return outList

>>> get_sublist_index(L, 3)
[(0, 2), (1, 1)]
>>> 
票数 3
EN

Stack Overflow用户

发布于 2016-12-03 23:12:55

代码语言:javascript
复制
L=[[1,2,3],[4,5,6],[2,3,4,5,3]]

a = 3

print([(i,j) for i,x in enumerate(L) if a in x for j,b in enumerate(x) if b == a])
#[(0, 2), (2, 1), (2, 4)]

使用列表理解,您可以挖掘并返回所有子值。如果您需要更深入,只需继续链接列表理解或编写一个函数来完成它。

票数 3
EN

Stack Overflow用户

发布于 2016-12-03 23:08:35

可能是这样的:

代码语言:javascript
复制
def find_sublist(outer, what):
    for i, lst in enumerate(outer):
        try:
            return i, lst.index(what)
        except ValueError:
            pass

实际上,output = [0][2]会抛出一个异常。不知道你这么说是什么意思。你想要一个包含两个元素的元组吗?我假设你知道。

你也可以用一些更优雅的东西,比如

代码语言:javascript
复制
In [8]: [(i, sublist.index(3)) for i, sublist in enumerate(L) if 3 in sublist]
Out[8]: [(0, 2)]

In [9]: [(i, sublist.index(4)) for i, sublist in enumerate(L) if 4 in sublist]
Out[9]: [(1, 0)]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40949132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档