2016-01-31 136 views
-2

我想将变量与存储在数组中的值进行比较。数组中的值从csv文件中提取出来。如果数组的值等于变量,它将打印出真实的数据。将变量与数组中的每个元素进行比较

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循环不会停止,所以它继续打印错误。有没有办法阻止它运行循环,当它完成比较数组中的值? – huihan

+1

对于第一个'数组',它不等于'数字','all'将因短路而爆发,而不关心任何后续的匹配。我不认为这是OP所要求的。 –

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'for line 7 – huihan

+0

oops!确定忽略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') 
相关问题