背景說明
最近在寫Rough Set的時候,剛好寫完想說重構一下程式,於是就和ChatGPT來請教一下,不得不說有蠻多收穫了,於是就來筆記一下。
原始寫法
class RoughSet:
def __init__(self, data, name_col=None, feature_col=None, decision_col=None):
self.df = data
if name_col is None:
self.name_column = data.columns[0]
else:
self.name_column = name_col
if feature_col is None:
self.feature_col = list(data.columns[1:-1])
else:
self.feature_col = feature_col
if decision_col is None:
self.decision_col = data.columns[-1]
else:
self.decision_col = decision_col
self.check_roughset_prerequisites()
- 這邊是想要傳入設定的
name_col
,feature_col
,decision_col
等內容 - 但也允許使用者如果沒有傳入的話,會用預設的欄位
- 只是這個欄位是要從使用者傳入的
data
來計算
- 只是這個欄位是要從使用者傳入的
ChatGPT優化
class RoughSet:
def __init__(self, data, name_col=None, feature_col=None, decision_col=None):
self.df = data
self.name_column = name_col or data.columns[0] # 簡化的if/else語法
self.feature_col = feature_col or list(data.columns[1:-1])
self.decision_col = decision_col or data.columns[-1]
self.check_roughset_prerequisites()
- 這邊利用
None
和or
的特性 - 當
or
的前面那個值非False(None)的時候,就會直接取用前者
心得
使用self.name_column = name_col or data.columns[0]
的方式,可以簡化if/else寫法之餘滿足預設值的需求