私は、リストの最大整数と、最高の数字と2番目に高い数字の間のマージンを見つけるプログラムを作ろうとしています。私はそれがこれらのタプル値を返したい:リストの最大マージン
>>>max_margin([5,6,4,3])
(6, 1)
>>>max_margin([8, -2, 8, -3])
(8, 0)
>>>maxmargin([2])
(2, None)
>>>maxmargin([])
(None, None)
私はこれを達成するコードを作ってきたが、それはそれについて移動する最良の方法はありません。ここにあります:
def max_margin(int_list):
if not int_list:
return None, None
else:
maxnum = nextval = int_list[0]
bymargin = None
for i in intlist:
if i > nextval:
nextval = i
if i > maxnum:
tmp = nextval
nextval = maxnum
maxnum = tmp
bymargin = maxnum - nextval
if maxnum == i and nextval == i:
maxnum = i
nextval = i
bymargin = maxnum - nextval
if len(int_list) <= 1:
maxnum = maxnum
bymargin = None
return maxnum, bymargin
これを書き込む方がいいですか?
それはあなたが最初の 'else'を削除するため、インデントレベル –
に属しているので、私は、オフトピックとして、この質問を閉じるために投票していますトピックをオフトピックとしてマークしますか?それは最も一般的なサイトを5つだけマイグレーションすることを許可しているようですので、何が最善のものかはっきりしませんでした(私は同意します、これはcodereviewにあるべきです)。 – ForceBru
が任意のアイデアどのように実際にを@VincentSavard保存することができますCodeReview.stackexchange.com – dwanderson