簡體   English   中英

如何在列表列表中獲取相同值的所有出現的索引列表?

[英]How to get list of indexes of all occurences of the same value in list of lists?

有一個列表,

mylist = [[1, 3, 4], [3, 6, 7], [8, 0, -1, 3]]

我需要一個方法來獲取包含某些特定值的所有元素的索引的列表,例如“3”。 所以對於'3'的值,這樣的索引列表應該是

[[0, 1], [1, 0], [2, 3]]

提前致謝。

更新 :我們可以在同一個子列表中有幾個尋求值的實例(在我們的例子中為'3'),例如

my_list = [[1, 3, 4], [3, 6, 7], [8, 0, -1, 3, 3]]

所以期望的輸出將是[[0, 1], [1, 0], [2, 3], [2, 4]]

我想我的解決方案有點天真,這里是:

my_list = [[1, 3, 4], [3, 6, 7], [8, 0, -1, 3, 3]]
value = 3
list_of_indexes = []

for i in range(len(my_list)):
        for j in range(len(my_list[i])):
            if my_list[i][j] == value:
                index = i, j
                list_of_indexes.append(index)

print list_of_indexes

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

看到更緊湊的解決方案會很棒

假設值在每個子列表中出現一次,您可以使用以下函數,該函數使用內置enumerate函數和列表推導:

my_list = [[1, 3, 4], [3, 6, 7], [8, 0, -1, 3]]

def func(my_list, x):
    return [[idx, sublist.index(x)] for idx, sublist in enumerate(my_list)]

answer = func(my_list, 3)
print(answer)

產量

[[0, 1], [1, 0], [2, 3]]

簡單的方法,

def get_val(mylist, val):
    for ix, item in enumerate(mylist):
        yield [ix, item.index(val)]

mylist = [[1, 3, 4], [3, 6, 7], [8, 0, -1, 3]]

val = list(get_val(mylist, 3))
print(val)

輸出:

[[0, 1], [1, 0], [2, 3]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM