PROGRAMMERS leve 1ボリュームの追加
🔗 ソース
プログラマレベル1:ボリュームの追加
📄 質問する
📝 マイコード(修正前)
def solution(absolutes, signs):
answer = 0
for i in range(len(absolutes)):
if signs[i]:
answer += absolutes[i]
else:
answer -= absolutes[i]
return answer
悩む
for文では、リスト内の各要素に配列の長さとインデックスを使用しない方法はありますか?
for sign in signs:
またはfor absolute in absolutes:
使用できますが、これでは要素の1つしかアクセスできません.🛠 解決策
少し前に授業で習ったzip関数を思い出しました.
zip()関数は、複数のループ可能オブジェクトをパラメータとして受信し、各オブジェクトに含まれる要素にtupleの形式で順次アクセスできる反復器(iterator)を返します.
numbers = [1,2,3]
letters = ["a","b","c"]
for pair in zip(numbers, letters):
print(pair)
#(1, 'a')
#(2, 'b')
#(3, 'c')
リストの前に「解凍」(Unpacking)演算子を付けてzip()関数に渡すと、解凍(すなわち、分解)されます.この過程により,元の2つのtupleを再獲得することができる.numbers, letters = zip(*pairs)
print(numbers) #(1,2,3)
print(letters) #('a','b','c')
📝 マイコード(修正後未完了)
def solution(absolutes, signs):
answer = 0
for absolute, sign in zip(absolutes, signs):
if signs:
answer += absolute
else:
answer -= absolute
return answer
💡 マイコード(最終)
考えてみればif-elseドアを一列に整理すれば、儀式はもっときれいになるはずだ.
def solution(absolutes, signs):
answer = 0
for absolute, sign in zip(absolutes, signs):
answer += absolute if sign else -absolute
return answer
悟る
if-else文が表示された場合は、1行でクリーンアップできるかどうかを考慮します:)
Reference
この問題について(PROGRAMMERS leve 1ボリュームの追加), 我々は、より多くの情報をここで見つけました https://velog.io/@pup-paw/PROGRAMMERS-음양-더하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol