2016-05-20 10 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を結果リストや1、9などを含むオブジェクトを渡すことは可能でしょうか?

+3

を '{1,9}&セット(sh1.row_values(行))であれば'おそらく? –

+5

'any'を使うことができます:'もしあれば(iが(1、9)のiのsh1.row_values(行)にあります) ' – njzk2

+0

AnthonySottileとnjzk2に感謝します – PyNoob

答えて

5

のセットを使用:

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

遅れてごめんなさい、ありがとう – PyNoob

関連する問題