我有一个方法可以检查Excel工作表,将数据解析为一个集合。 但是,如果该数据不存在于工作表中,我希望它返回none
而不是一个空集。 示例:
import xlrd
def scanSheet(self, sheet):
kwds = ['kwd1','kwd2'] #pretend these are header names for the columns
mySet = set()
if not sheet:
return self.dataset #set to None in __init__
for row in range(sheet.nrows):
for col in range(sheet.ncols):
if str(sheet.cell_value(row, col)).lower() in kwds:
sheetLength = list(range(row+1, sheet.nrows)) #ignore the header row
for idx in range(len(sheetLength):
data = sheet.cell(sheetLength[i], col).value
mySet.add(data)
self.dataset = mySet
如果有数据,它返回一个集合,一切都是愚蠢的酷。 如果没有数据,它将返回set()
,如上所述。 如果列表为空而不是set()
,是否可以将其设置为none
? 函数开头的if
语句不会为类变量触发none
值,原因是存在Excel工作表,但不包含被认为感兴趣的数据。
因为空集是假的,你可以这样做
def func(yourset):
return yourset or None
如果yourset
为空(又称false
y)-它将返回none
。
print(func(set([42])))
print(func(set()))
输出:
{42}
None
参见真值测试