2016-05-20 4 views
2

Gibt es eine Möglichkeit, das unten in einer prägnanter Weise zu erreichen? Wenn ich viele Werte habe, wird mein Skript sehr unlesbar.Oder Bedingung in Liste Verständnis

aktuellen Code

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) 

-Code Ergebnis

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

Wunsch Syntax

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

Auch wou Ist es möglich, eine Liste oder ein Objekt, das 1, 9 usw. enthält, zu übergeben?

+3

'if {1, 9} & Set (sh1.row_values ​​(Zeile))' vielleicht? –

+5

Sie können 'any' verwenden:' falls vorhanden (i in sh1.row_values ​​(row) für i in (1, 9)) ' – njzk2

+0

danke AnthonySottile und njzk2 – PyNoob

Antwort

5

einen Satz Verwendung:

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

Entschuldigung für die Verzögerung und danke – PyNoob