【问题标题】:Find index of an (sub)item in a 2D list with a 2D index在具有 2D 索引的 2D 列表中查找(子)项的索引
【发布时间】:2021-03-21 17:00:14
【问题描述】:

这不是一个简单的问题,有点棘手,不知道是否可以在所有限制条件下解决。 所以我的列表中有这个数字,我需要一种方法来检索它的索引,问题是我的列表是一个二维列表,所以我不能真正应用.index() 方法。否则,我必须传入此 2D 列表中的一个 1D 列表。当我想要的实际上是这个一维列表中的数字的索引时。

我首先找不到子列表的索引(一维列表),因为我只有我想要找到索引的数字,我没有子列表。 另一个主要问题是这个相同的数字可以在多个子列表中找到,在这种情况下,找到这个数字将返回多个索引。

my2D_list =[[5, 4, 8, 3, 6], [3, 5, 0, 6, 7], [9, 8, 0, 1, 2], [9, 7, 4, 8, 4], [7, 2, 0, 5, 3]]
#I placed in this list the numbers I need to find the index of in my2D_list.
items_to_find_the_index_of= [9, 8, 8, 0, 3]

我需要我的输出看起来像:

9 = my2D_list[2][0] and my2Dlist[3][0]

items_to_find_the_index_of 列表中的所有数字都相同。 我什至不知道这个问题是否真的可以按照我需要的方式解决,但感谢您花费时间和精力帮助我找到解决办法。

鲁巴。

【问题讨论】:

  • 您要查找第一次出现还是所有出现?
  • 我确实需要找到所有的出现

标签: python list indexing numbers sublist


【解决方案1】:
items_to_find_the_index_of = [9, 8, 8, 0, 3]
index_container = []
for item in items_to_find_the_index_of:
    indexes = []
    for index, sub_lst in enumerate(my2D_list):
        try:
            indexes.append((index, sub_lst.index(item)))
        except ValueError:
            pass
    index_container.append(indexes)

print(index_container)

输出:

[[(2, 0), (3, 0)], [(0, 2), (2, 1), (3, 3)], [(0, 2), (2, 1), (3, 3)], [(1, 2), (2, 2), (4, 2)], [(0, 3), (1, 0), (4, 4)]]

【讨论】:

  • 感谢 Vishal 但这并不是我真正想做的,我需要找到值 9 的索引作为列表(例如:[2][0] 和 [3][ 0] 或 [2,0] 和 [3,0]) cz 这些索引中的每一个都是我程序中某些东西的位置,这就是我需要排序的,但我的排序列表是数字的一维列表,所以我需要检索它们的索引,以便我可以根据排序的数字列表对它们进行排序。
  • 我还不确定 Vishal,今天还没有时间处理它,但我会尽快处理,这不是我真正需要的输出,但我会查看代码为有时间就去,谢谢!
  • 您好 Vishal,当我想要的是 my2D_list 中每个数字的索引而不是其子列表中的每个数字时,您的函数为我提供了子列表中每个数字的索引。我修改了我的问题,使其更明确地显示我需要如何输出。我希望能够从它们的索引中访问 my2D_list 中我的列表的编号,这对于您的函数检索的索引是不可能的,因为它只检索子列表中值的索引,而不是整个 my2D_list 中的值,我没有需要 cz 这些索引不能让我访问 my2D_list 中我的号码的值。
  • 这就是我不接受你的答案的原因,我不想打勾,否则其他人会认为答案已经找到了,在这种情况下他们不会花时间寻找答案。但是我一看到它就对你的答案表示赞成,因为它背后有一些逻辑可以解决部分问题,只是没有完全解决,或者至少不是我需要解决的方式才能访问我的数字的价值在 2D_list 中,我故意将其命名为 2D_list cz 你需要 2 个索引来访问其中的值 bcz 的子列表:my2D_list[sublist index][nb index in sublist]
  • 哈哈,谁在乎呢,如果有人查看问题,他们会看到它已经解决,没有必要让任何人阅读 cmets,我喜欢跟踪内容,所以我不会删除它们,除非我我确信这是必要的。
猜你喜欢
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多