見出し画像

【Python】超初心者向け問題3問(5) リスト

Python勉強の個人的なメモを兼ねた記事です。
最近慣れてきたリスト内包表記を問題に入れております。

出先などちょっとした空き時間にPythonの練習をしたいとき、GoogleColaboratoryは便利です。スマホからでも動作確認ができるのでオススメです。


Python超初心者向け問題

問題1: リストの合計

以下のリストがあります。

numbers = [5, 8, 13, 21, 34, 55]

このリストの要素をすべて足して、その合計を出力するプログラムを作成してください。

※関数を使った方法とループで計算する方法を試してみましょう。


問題2: 偶数のみの合計

次のリストがあります。

numbers = [2, 5, 8, 13, 21, 34, 55, 68]

このリスト内の偶数のみを取り出し、その合計を計算するプログラムを作成してください。

※ループで計算する方法とリスト内包表記を試してみましょう。


問題3: リストの要素の重複を削除

以下のリストがあります。

numbers = [3, 5, 7, 3, 8, 2, 5, 7, 9, 2]

このリスト内の重複する要素を削除し、新しいリストを作成してください。その後、新しいリストを出力してみてください。



回答例:

問題1: リストの合計

## 例1: sum関数を使った方法
numbers = [5, 8, 13, 21, 34, 55]
print(sum(numbers))
## 例2: ループで計算
numbers = [5, 8, 13, 21, 34, 55]
total = 0
for number in numbers:
    total += number
print(total)
## 例3: ちから技
numbers = [5, 8, 13, 21, 34, 55]
print(numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5])

結果:
136

リストの合計は、SUM関数で一発です。


問題2: 偶数のみの合計

## 例1: リスト内包表記を使う
even_numbers = [ num for num in numbers if num % 2 == 0 ]
print("合計:{}    偶数リスト:{}".format(sum(even_numbers), even_numbers))
## 例2: ループで処理
even_numbers = []
for num in numbers:
    if num % 2 == 0:  #偶数は0, 奇数なら1
        even_numbers += [num]
print("合計:{}    偶数リスト:{}".format(sum(even_numbers), even_numbers))

結果:
合計:112   偶数:[2, 8, 34, 68]

偶数: 2で割った余りが0になるもの。
偶数リストが出来たら、合計を計算すれば完成です。

even_numbers = [ num for num in numbers if num % 2 == 0 ]』
のような、リスト内包表記は慣れないと意味が分かりにくいです。

最初はリスト内包表記を分解して考え、
for num in numbers:

    if num % 2 == 0
        even_numbers += [num]
としてリストに追加される!
と考えるとよいと思います。


問題3: リストの要素の重複を削除

## 例1: リストの順番を入れ替えない
numbers = [3, 5, 7, 3, 8, 2, 5, 7, 9, 2]
new_numbers = []
for number in numbers:
  if number not in new_numbers: #新リストに値がない
    new_numbers += [number]      #リストに追加
print(new_numbers)
## 例2: リスト順番は気にしない方法
numbers = [3, 5, 7, 3, 8, 2, 5, 7, 9, 2]
new_numbers = set(numbers)    #集合にする(重複データが消える)
new_numbers = list(new_numbers)    #リストにする
print(new_numbers)

結果:
[3, 5, 7, 8, 2, 9]    #例1
[2, 3, 5, 7, 8, 9]    #例2

例2は、データの順番が関係ない場合は使用できます。
集合(set)の特徴を使ったシンプルな方法です。


この記事が気に入ったらサポートをしてみませんか?