2016-01-31 2 views
-2

Я пытаюсь сравнить переменную со значениями, которые хранятся в массиве. Значения в массиве извлекаются из файла csv. Если значения массива равны переменной, он будет распечатывать true.Сравните переменную с каждым элементом массива

import csv 

array=[] 

values = csv.reader(open('SampleEEG data Insight-1-30.11.15.17.36.16.csv', 'r'),  
        delimiter=',', 
        quotechar='|') 
for row in values: 
    array.append(row[5]) 

number= 4200 

for a in array: 
    if number == a: 
     print ('True') 
print ('False') 

Код сравнивает только одно значение в массиве и возвращает значение false. Как сравнить все значения в массиве с переменной?

ответ

1

Используйте all функцию с списковых

number = 10 
array = [1, 2, 3, 4] 

print(all(number == a for a in array)) 
# False 

array = [10, 10, 10, 10] 
print(all(number == a for a in array)) 
# True 
+0

Привет, это работает! У меня другая проблема, цикл for не останавливается, поэтому он продолжает печатать false. Есть ли способ остановить его от запуска цикла, когда он завершит сравнение значения в массиве? – huihan

+1

Для первого 'a в массиве', который не равен' number', 'all' собирается вырваться из-за короткого замыкания, не заботясь о каких-либо последующих совпадениях. Я не думаю, что это то, о чем просит ОП. –

0

Вы можете использовать all() - встроенная функция

all (number == a for a in array) 
0

Из того, что я мог понять из Вашего комментария, это, вероятно, то, что вы ищете :

array=[] 

with open('SampleEEG data Insight-1-30.11.15.17.36.16.csv', 'r') as file: 
    lines = [line.split() for line in file.readlines()] 


for line in lines: 
    try: 
     array.append(float(line[5])) 
    except ValueError: 
     pass 

number= 4200 

for a in array: 
    if number == a: 
     print ('True') 
print ('Done, all checked') 
+0

Привет, если бы я добавил csv.QUOTE_NONNUMERIC, возникает ошибка: ValueError: невозможно преобразовать строку в float: 'title: 1' для строки 7 – huihan

+0

oops! Ok игнорируйте csv.QUOTE_NONNUMERIC и обратите внимание на используемое отступы: print («True») должен быть отступом, как показано. Попробуй это. Кроме того, вы можете показать одну строку текста образца из файла CSV, что было бы полезно для помогать вам ;-) –

+0

что-то вроде этого 4136.410156 4136.410156 4141,025391 4149,230469 4153,333008 4153,333008 4152,307617 4148,205078 4147,692383 4158,974121 4168.205078 – huihan

0

Потому что это выход из цикла после того, как он попадает в первое истинное значение. Используйте следующий код:

for i in array: 
     if number == i: 
      print ('True') 
     else: 
      print ('False') 
Смежные вопросы