2015-04-03 2 views
0

У меня есть список python с кортежами, я хочу проверить, есть ли первый элемент кортежа во всех кортежах в списке, я могу сделать это следующим образом:Список python с кортежем итерации для существования и получения индекса

x = [('a',1), ('b',2), ('c',3)] 
if 'a' in ([y[0] for y in x]): 
    //how to get the index of the tuple that 'a' exist 

Что я хочу в индексе кортежа, что «a», как указано выше, существует.

ответ

2

Вы можете использовать next():

next(i for i in xrange(0, len(x)) if x[i][0] == 'a') 

Обратите внимание, что если a не будет найден, вы получите StopIteration исключение. Вы также можете указать значение по умолчанию, что значение, возвращаемое вместо:

next((i for i in xrange(0, len(x)) if x[i][0] == 'd'), -1) 

Демо:

>>> next(i for i in xrange(0, len(x)) if x[i][0] == 'a') 
0 
>>> next((i for i in xrange(0, len(x)) if x[i][0] == 'd'), -1) 
-1 

enumerate() также может быть использован здесь, чтобы получить значение индекса:

>>> next(i for i, (a, _) in enumerate(x) if a == 'a') 
0 
>>> next((i for i, (a, _) in enumerate(x) if a == 'd'), -1) 
-1 
Смежные вопросы