在列表列表中查找索引列表元素

时间:2016-12-17 18:03:42

标签: python list indexing

我正在尝试list.index列表列表中列表元素中第一次出现变量。 例如:

myList = [[[(0,0),(1,1)],'add',10],[[(0,0),(1,1)],'add',10] . . . ]

我想做点什么:

index = myList.index((0,0))
myList[index] : [[(0,0),(1,1)],'add',10]

到目前为止,我正在尝试使用以下代码实现此目的:

i = 0
for cage in myList:
    if cage[0][0] == A:
       print('Found')
       break
    i += 1
print(self.Cages[i])

但是,我想为我的问题找到一个更加pythonic的解决方案。

2 个答案:

答案 0 :(得分:0)

您确定使用的是最佳数据结构吗?难道你不能重新考虑你的程序,以便它产生更强大的东西吗?这样的嵌套列表要么是反pythonic ......

无论如何,为什么我会建议使用您的代码来使用next()enumerate()

index = next(i for i, x in enumerate(myList) if x[0][0] == A)

答案 1 :(得分:0)

一个选项是使用while循环iter(my_list)

my_list = [[[(0,0),(1,1)],'add',10],[[(0,0),(1,1)],'add',10]]

my_iterator = iter(my_list)

item = next(my_iterator)
while (0, 0) not in item[0]:
    item = next(my_iterator)

print item

<强>输出:

>>> my_list = [[[(2,2),(1,1)],'add',10], [[(0,0),(1,1)],'add',10], [[(3,3),(1,1)],'add',10]]
>>>
>>> my_iterator = iter(my_list)
>>>
>>> item = next(my_iterator)
>>> while (0, 0) not in item[0]:
...     item = next(my_iterator)
...
>>> print item
[[(0, 0), (1, 1)], 'add', 10]