【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])
リストの合計は、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))
偶数: 2で割った余りが0になるもの。
偶数リストが出来たら、合計を計算すれば完成です。
『even_numbers = [ num for num in numbers if num % 2 == 0 ]』
のような、リスト内包表記は慣れないと意味が分かりにくいです。
問題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)
例2は、データの順番が関係ない場合は使用できます。
集合(set)の特徴を使ったシンプルな方法です。
この記事が気に入ったらサポートをしてみませんか?