2016-01-31 132 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') 
相關問題