2016-05-20 30 views
2

有沒有辦法以更簡潔的方式完成以下內容?如果我有很多值的情況下我的腳本將變得非常不可讀。或列表理解中的條件

目前代碼

import xlrd 
filename = r'H:\Book1.xls' 
wb = xlrd.open_workbook(filename) 
sh1 = wb.sheet_by_index(0) 
data = [sh1.row_values(row) for row in range(sh1.nrows) if 1 in sh1.row_values(row) or 9 in sh1.row_values(row) ] 
print(data) 

代碼產生的

[[1.0, 2.0, 3.0, '', 4.0, '', 6.0], ['', '', '', '', 9.0, '', '']] 

期望中的語法

data = [sh1.row_values(row) for row in range(sh1.nrows) if 1,9 in sh1.row_values(row)] 

而且,WOU ld有可能傳入一個包含1,9等的列表或某個對象?

+3

'如果{1,9}設置(sh1.row_values(行))'也許? –

+5

你可以使用'any':'如果有的話(我在sh1.row_values(row)for i in(1,9))' – njzk2

+0

謝謝AnthonySottile和njzk2 – PyNoob

回答

5

使用一組:

if {1,9}.intersection(sh1.row_values(row)) 
+0

抱歉的延遲,謝謝你 – PyNoob