这是我的清单:
list = [[4, '+', 6, '=', 10], [['?', 4], ['+', 0], ['?', 2], ['=', 0], ['?', 'a']]]
我需要找到第二个列表的索引,其中第一个元素是'?'无论第二个元素是什么,
在此示例中,我想要的答案是1,因为子列表['?',4]
是正确的。
我试过了:
[x for x, y in enumerate[list] if y[0] == '?']
[y[0] for y in list].index('?')
list[1,[0]].index('?')
我知道我可以写一个例行程序,但你认为有一个语句解决方案。
答案 0 :(得分:1)
这个问题有点不清楚。我认为你的意思(根据你发布的代码)是第二个列表中的第一个值是?的子列表中的索引。如果是这种情况,您可以使用:
(i for i,x in enumerate(lst[1]) if x[0] == '?').next()
然而,如果第二个列表是
,那不是[['?', 4], ['+', 0], ['?', 2], ['=', 0], ['?', 'a']]
然后['?', 4]
的索引为0,因为pythons索引通常是从0开始的。如果您希望它为1,只需添加一个。
答案 1 :(得分:-1)
解决方案:
>>> lst = [[4, '+', 6, '=', 10], [['?', 4], ['+', 0], ['?', 2], ['=', 0], ['?', 'a']]]
>>> [x for x, y in enumerate(lst) if y[0] == '?']
[0, 2, 4] #the indexes of the locations of the '?')
由于lst有3个嵌套列表,y [0]返回4
和['?', 4]
。您不能执行y [0] [0],因为第一个返回是一个整数(没有切片选项),但您可以循环遍历第二个嵌套列表([['?', 4], ['+', 0], ['?', 2], ['=', 0], ['?', 'a']]
)。当然,只有在你不需要遍历第一个时才有效!