在python中查找嵌套列表中元素的索引

时间:2015-11-26 12:15:59

标签: python numpy nested-lists

我试图在python中获取嵌套列表中元素的索引 - 例如[[a, b, c], [d, e, f], [g,h]](并非所有列表都具有相同的大小)。 我尝试过使用

strand_value= [x[0] for x in np.where(min_value_of_non_empty_strands=="a")]

但这只返回一个空列表,即使该元素存在。知道我做错了吗?

4 个答案:

答案 0 :(得分:4)

def find_in_list_of_list(mylist, char):
    for sub_list in mylist:
        if char in sub_list:
            return (mylist.index(sub_list), sub_list.index(char))
    raise ValueError("'{char}' is not in list".format(char = char))

example_list = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]

find_in_list_of_list(example_list, 'b')
(0, 1)

答案 1 :(得分:1)

假设您的列表是这样的:

lst = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g','h']]
list_no = 0
pos = 0
for x in range(0,len(lst)):
    try:
        pos = lst[x].index('e')
        break
    except:
        pass

list_no = x

list_no给出了列表编号,pos给出了该列表中的位置

答案 2 :(得分:0)

您可以使用列表理解和枚举

来完成此操作

<强>代码:

lst=[["a", "b", "c"], ["d", "e", "f"], ["g","h"]]
check="a"
print ["{} {}".format(index1,index2) for index1,value1 in enumerate(lst) for index2,value2 in enumerate(value1) if value2==check]

<强>输出:

['0 0']

<强>步骤:

  • 我列举了List of List并获得了它的索引和列表
  • 然后我列举了已获取的列表并检查它是否与check变量匹配并将其写入列表(如果是这样)

这提供了所有可能的输出

<强>即。)

<强>代码2:

lst=[["a", "b", "c","a"], ["d", "e", "f"], ["g","h"]]
check="a"
print ["{} {}".format(index1,index2) for index1,value1 in enumerate(lst) for index2,value2 in enumerate(value1) if value2==check]

<强>给出:

['0 0', '0 3']

备注:

  • 如果需要,您可以轻松将其转换为列表而不是字符串

答案 3 :(得分:0)

这样就够了吗?

array = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]
for subarray in array:
    if 'a' in subarray:
        print(array.index(subarray), '-', subarray.index('a'))

这将返回0 - 0.第一个零是数组内部子数组的索引,最后一个零是子数组内的“a”索引。