2013-05-07 6 views
2

У меня есть список данных:Проверьте значение в списке равно некоторое число

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

И я пытаюсь проверить, если какое-либо из отдельных numers равно 3, и если да, какой элемент возврата, поэтому список [0], список [3] и т.д. в первоначальный список содержит это значение 3.

Я получил, насколько:

for i in range(0, len(gcounter_selection)): 
    for x in range(0,len(gcounter_selection)): 
    if any(x) in gcounter_selection[i][x]==3: 
     print(i) 

Мой список называется gcounter_selection Кстати.

Но я получаю ошибку типа:

TypeError: argument of type 'int' is not iterable 

Я попытался с помощью выражения генератора, но я не смог получить, что работать.

+0

списки Python являются 0 индексируется, так что вы, вероятно, имели в виду: список [0], список [3] в вашем пример. –

ответ

8

Если я правильно понял, что вы ищете списковые:

value = 3 
lst = [[0, 3], [1, 2], [2, 1], [3, 0]] 
items = [x for x in lst if value in x] 
print(items) 
#[[0, 3], [3, 0]] 

Чтобы получить позиции элементов, а не только элементов, добавьте enumerate:

indexes = [n for n, x in enumerate(lst) if value in x] 
+0

Большое спасибо! Это работает отлично, но как мне изменить, если я один элемент? ie return "lst [1], lst [4]" – user124123

+0

@TariqRobinMuman: ответ обновлен – georg

+0

Хорошо, я только что попробовал ваше решение, чтобы получить позицию, но он возвращает только: [0, 3], поэтому я думаю, что он проверяет вторую цифры только в списке. – user124123

1

исправленной версию оригинала

gcounter_selection = [[0, 3], [1, 2], [2, 1], [3, 0]] 

for i in range(0, len(gcounter_selection)): 
    if any(x == 3 for x in gcounter_selection[i]): 
     print(i) 

Однако это может быть упрощено до

for i, x in enumerate(gcounter_selection): 
    if any(y == 3 for y in x): 
     print(i) 

И нет никакой необходимости any в этом случае, просто проверить с in

for i, x in enumerate(gcounter_selection): 
    if 3 in x: 
     print(i) 
Смежные вопросы