我有以下代碼段將串列的第一個元素和其余元素分成兩個變數:
test1 = [['p', '(q ∧ ?(q))', '?(p)'], ['p', '(?(p) ∧ ?(?(p)))', '?(p)']]
test2 = ['p', '(q ∧ ?(q))', '?(p)', 'q']
def seperate(data, index=None):
if index == None:
head = data[0]
origin = data[1:]
else:
head = data[index][0]
origin = data[index][1:]
return (head, origin)
print(seperate(test1,0))
print(seperate(test2))
print(seperate(test1,1))
輸出:
('p', ['(q ∧ ?(q))', '?(p)'])
('p', ['(q ∧ ?(q))', '?(p)', 'q'])
('p', ['(?(p) ∧ ?(?(p)))', '?(p)'])
這很好用。我的問題是函式的外觀和感覺,例如 if else 陳述句。
因為在兩個 if else 塊中幾乎完全相同。兩個輸入的維度略有不同。
我的問題是他們以這種方式優化代碼的方法我只有一個分配head = ...和一個分配origin = ...
uj5u.com熱心網友回復:
這是獲得相同行為的更簡潔的方法:
def seperate(data, index=None):
list_to_split = data if index is None else data[index]
return (list_to_split[0], list_to_split[1:])
uj5u.com熱心網友回復:
你可以把它歸結為:
def seperate(data, index=None):
return(data[0], data[1:]) if index == None else (data[index][0], data[index][1:])
uj5u.com熱心網友回復:
建議零售價!親!
該函式應該只做一件事,而不是擔心同一件事的不同突變,尤其是當函式的呼叫者從中獲得很少的優勢時。對于呼叫者,它們之間有什么區別?
seperate(test1, 0)
seperate(test1[0])
基本上什么都沒有。
該函式不應該接受任何index引數,呼叫者應該簡單地確保傳入一個串列而不是串列的嵌套串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448682.html
