pythonの内包表記でFizzBazz問題を解いてみた【python初心者】
pythonのループ処理について、for文より内包表記のほうが速くて簡潔に書けるので
オススメ!的な記事をよく見かけたので、実際どれくらい早くなるのかFizzBazz問題で試してみました。
目次
2021/8/8 ソースコード(main.py) 全体的に修正
2021/8/9 ソースコード(main.py) 全体的に修正
1.FizzBuzz問題について
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」を、
5の倍数のときは「Buzz」と出力し、
3と5の両方の倍数のときには「FizzBuzz」と出力すること。
有名な問題で、上記の要件を満たすプログラムの作成が目的となります。
2.解答
import time
def fizzBuzz(list):
#for文の場合
# result = []
# for i in list:
# if(i % 15 == 0):
# result.append('fizzBazz')
# elif(i % 5 == 0):
# result.append('bazz')
# elif(i % 3 == 0):
# result.append('fizz')
# else:
# result.append(str(i))
#内包表記の場合
result = ["fizzBazz" if number%15 == 0 else
'Buzz' if number % 5 == 0 else
'Fizz' if number % 3 == 0 else
number
for number in list]
return result
def main():
#連番の配列
number_list = range(1, 101)
fizzBuzz_list = fizzBuzz(number_list)
#fizzBazz問題の回答
for answer in fizzBuzz_list:
print(answer)
if __name__ == '__main__':
try:
# 時間計測開始
time_start = time.time()
# 処理を書く(ここでは1秒停止する)
main()
# 時間計測終了
time_end = time.time()
# 経過時間(秒)
time = time_end - time_start
#処理時間
print('################################')
print('処理時間: ' + str(time))
except Exception as error:
#例外エラー
print(error)
実行結果
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
fizzBazz
~中略~
97
98
Fizz
################################
処理時間: 4.649162292480469e-05
- main()関数で普通にFizzBazz問題を解く
- 内包表記でどれくらい早くなるかmain()関数の実行前後で処理時間を計測
なかなか平凡な解答になりました。
そこそこ、簡潔なコードになりました。
結論
実行速度の差は分からないが記述量は減る
fizzBuzz()内のコメントアウトしたfor文で書いたロジックと比べると
コード量が少なくスッキリします。
実行速度については比較しては見たのですが明確な差は出ませんでした。
負荷や処理量を増やすため、連番のリストを100から100万まで増やしてみたりしましたが
特に処理時間に差は出なかったです。
Author And Source
この問題について(pythonの内包表記でFizzBazz問題を解いてみた【python初心者】), 我々は、より多くの情報をここで見つけました https://qiita.com/mahama_0000/items/cb2f5cc5b44e07c9e662著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .