Python足し算の基本|数値計算とリスト結合を理解する

Pythonの足し算(+演算子)の基本を解説。数値計算、文字列結合、リスト結合など、データ型による動作の違いから実践的な使い方まで詳しく説明します。

Learning Next 運営
18 分で読めます

Python足し算の基本|数値計算とリスト結合を理解する

みなさん、Pythonで「+」を使って計算していますか?

「数値の足し算はわかるけど、文字列でも+が使えるの?」 「リストでも+が使えるって聞いたけど、どうやって使うの?」

こんな疑問を持ったことはありませんか?

実は、Pythonの+演算子は数値計算だけじゃないんです。 文字列をつなげたり、リストを結合したりもできるんですよ。

この記事では、Pythonの+演算子の使い方を一から説明します。 読み終わる頃には、+演算子を自由自在に使えるようになりますよ!

数値の足し算:基本中の基本

まずは、一番シンプルな数値の足し算から始めましょう。 これは皆さんもよく使っているはずです。

整数同士の足し算

# 整数の足し算
a = 10
b = 20
result = a + b
print(result) # 30
print(type(result)) # <class 'int'>
# 複数の数値の足し算
total = 5 + 10 + 15 + 20
print(total) # 50

上のコードでは、まず2つの整数を足し算しています。 a + bで10と20を足して、結果は30になります。

type(result)で確認すると、結果も整数型になっていますね。 複数の数値を一度に足すこともできます。

小数点の足し算

# 浮動小数点数の足し算
x = 3.14
y = 2.86
result = x + y
print(result) # 6.0
print(type(result)) # <class 'float'>
# 小数点の計算例
price1 = 150.50
price2 = 299.99
total_price = price1 + price2
print(f"合計金額: {total_price}円") # 450.49円

小数点の計算も同じように使えます。 3.14と2.86を足すと6.0になります。

小数点を含む計算では、結果も小数点型になります。 お値段の計算なんかでよく使いますね。

違う数値型を足し算するとどうなる?

# 整数と浮動小数点数の足し算
integer_num = 10
float_num = 3.5
result = integer_num + float_num
print(result) # 13.5
print(type(result)) # <class 'float'>
# Pythonが自動的に型を変換
print(5 + 2.0) # 7.0
print(3.0 + 7) # 10.0

ここが面白いところです。 整数と小数点を足すと、結果は小数点になります。

Pythonが自動的に型を変換してくれるんです。 「より精度の高い型に合わせる」という仕組みなんですね。

文字列の結合:文字をつなげてみよう

+演算子は文字列でも使えます。 文字をつなげることを「文字列結合」と呼びます。

基本的な文字列結合

# 基本的な文字列結合
first_name = "田中"
last_name = "太郎"
full_name = first_name + last_name
print(full_name) # 田中太郎
# スペースを含む結合
greeting = "こんにちは、" + full_name + "さん"
print(greeting) # こんにちは、田中太郎さん

文字列同士を+でつなげると、1つの文字列になります。 「田中」+「太郎」で「田中太郎」ですね。

スペースやひらがなも一緒につなげることができます。 挨拶文なんかを作るのに便利です。

複数の文字列を結合

# 複数の文字列を結合
year = "2024"
month = "12"
day = "25"
date = year + "年" + month + "月" + day + "日"
print(date) # 2024年12月25日
# 改行を含む結合
message = "お疲れ様です。
" + "今日も良い一日を
" + "お過ごしください。"
print(message)

年月日を組み合わせて日付を作ることもできます。 「2024」+「年」+「12」+「月」+「25」+「日」で完成です。

改行文字( )も文字列の一部として扱えます。 メッセージを作るときに便利ですね。

数値と文字列を結合する時の注意点

# 数値と文字列の直接結合はエラー
age = 25
# name = "田中" + age # TypeError: 数値を文字列に変換する必要がある
# 正しい方法:数値を文字列に変換
name = "田中"
message = name + "さんは" + str(age) + "歳です"
print(message) # 田中さんは25歳です
# f文字列を使った方法(推奨)
message = f"{name}さんは{age}歳です"
print(message) # 田中さんは25歳です

ここは要注意です! 数値と文字列を直接+でつなげることはできません。

str(age)で数値を文字列に変換する必要があります。 でも、f文字列を使う方が簡単で読みやすいです。

リストの結合:複数のリストを1つにまとめよう

+演算子はリスト同士でも使えます。 複数のリストを1つにまとめることができるんです。

基本的なリスト結合

# 基本的なリスト結合
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined) # [1, 2, 3, 4, 5, 6]
# 元のリストは変更されない
print(list1) # [1, 2, 3]
print(list2) # [4, 5, 6]

リスト同士を+でつなげると、新しいリストが作られます。 [1, 2, 3][4, 5, 6]を足すと[1, 2, 3, 4, 5, 6]になります。

大切なのは、元のリストは変更されないということです。 新しいリストが作られるんですね。

異なる要素のリスト結合

# 異なる要素のリスト結合
fruits = ["りんご", "バナナ"]
vegetables = ["にんじん", "じゃがいも"]
foods = fruits + vegetables
print(foods) # ['りんご', 'バナナ', 'にんじん', 'じゃがいも']
# 数値と文字列が混在するリスト
numbers = [1, 2, 3]
words = ["a", "b", "c"]
mixed = numbers + words
print(mixed) # [1, 2, 3, 'a', 'b', 'c']

リストの中身が違っても結合できます。 果物と野菜のリストを合わせて食べ物リストを作れます。

数値と文字列が混在したリストも結合可能です。 Pythonって柔軟ですね。

複数のリストを一度に結合

# 複数のリストを一度に結合
morning = ["朝食", "通勤"]
afternoon = ["昼食", "会議"]
evening = ["夕食", "読書"]
daily_schedule = morning + afternoon + evening
print(daily_schedule) # ['朝食', '通勤', '昼食', '会議', '夕食', '読書']
# 空リストとの結合
empty_list = []
result = [1, 2, 3] + empty_list
print(result) # [1, 2, 3]

3つ以上のリストを一度に結合することもできます。 朝・昼・夜のスケジュールを合わせて1日のスケジュールを作成できます。

空のリストと結合しても、元のリストがそのまま残ります。 何も変わらないということですね。

その他のデータ型での+演算子

+演算子は他のデータ型でも使えます。 でも、使えないものもあるので注意が必要です。

タプルの結合

# タプルの結合
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple) # (1, 2, 3, 4, 5, 6)
print(type(combined_tuple)) # <class 'tuple'>
# 異なる要素のタプル結合
coordinates = (10, 20)
labels = ("x", "y")
point_info = coordinates + labels
print(point_info) # (10, 20, 'x', 'y')

タプルも+演算子で結合できます。 リストと同じような動作をします。

座標と座標軸のラベルを組み合わせたりできますね。 データをまとめるときに便利です。

集合(set)では+演算子は使えない

# 集合では+演算子は使用不可
set1 = {1, 2, 3}
set2 = {4, 5, 6}
# set1 + set2 # TypeError: +演算子は使用できない
# 集合の結合にはunionメソッドまたは|演算子を使用
combined_set = set1.union(set2)
print(combined_set) # {1, 2, 3, 4, 5, 6}
# |演算子を使用
combined_set = set1 | set2
print(combined_set) # {1, 2, 3, 4, 5, 6}

残念ながら、集合(set)では+演算子は使えません。 エラーが発生してしまいます。

代わりにunionメソッドや|演算子を使います。 データ型によって使える演算子が違うんですね。

実際の開発でよく使う+演算子の例

実際のプログラムでどんな風に使われるか見てみましょう。 きっと「あ、これ使えそう!」と思う例があるはずです。

データの集計

# 点数の合計計算
math_score = 85
english_score = 92
science_score = 78
total_score = math_score + english_score + science_score
average_score = total_score / 3
print(f"合計点: {total_score}点") # 合計点: 255点
print(f"平均点: {average_score:.1f}点") # 平均点: 85.0点

テストの点数を合計するときによく使います。 数学・英語・理科の点数を足して合計点を出します。

平均点も計算できますね。 学校のプログラムでよく見かけるパターンです。

ファイルパスの構築

# ファイルパスの構築
base_path = "/home/user"
folder_name = "documents"
file_name = "report.txt"
# パスの結合
full_path = base_path + "/" + folder_name + "/" + file_name
print(full_path) # /home/user/documents/report.txt
# より安全な方法(os.path.joinを推奨)
import os
safe_path = os.path.join(base_path, folder_name, file_name)
print(safe_path)

ファイルのパスを作るときにも+演算子を使えます。 フォルダ名とファイル名を組み合わせて完全なパスを作成できます。

ただし、実際の開発ではos.path.joinを使う方が安全です。 OSによってパスの区切り文字が違うからです。

リストデータの統合

# 複数部門のデータを統合
sales_team = ["田中", "佐藤", "鈴木"]
marketing_team = ["山田", "石井"]
support_team = ["高橋", "小林", "中村"]
# 全社員のリストを作成
all_employees = sales_team + marketing_team + support_team
print(f"全社員数: {len(all_employees)}人") # 全社員数: 8人
print(f"社員一覧: {all_employees}")

部門ごとに分かれたデータを統合するときに便利です。 営業・マーケティング・サポートの各チームを合わせて全社員リストを作成できます。

人数もlen()で簡単に確認できます。 データの統合作業でよく使うパターンですね。

CSVデータの処理

# CSVデータの処理例
header = ["名前", "年齢", "職業"]
row1 = ["田中太郎", "30", "エンジニア"]
row2 = ["佐藤花子", "25", "デザイナー"]
# ヘッダーとデータを結合
csv_data = [header] + [row1] + [row2]
print("CSVデータ:")
for row in csv_data:
print(",".join(row))

CSVファイルを作るときにも+演算子が活躍します。 ヘッダー行とデータ行を結合して、完全なCSVデータを作成できます。

実際にファイルに書き出すときの前処理としてよく使われます。 データ処理の基本的なパターンですね。

パフォーマンスを考えてみよう

+演算子を使うときは、パフォーマンスも考慮しましょう。 場合によっては、もっと効率的な方法があります。

文字列結合のパフォーマンス

# 大量の文字列結合(非効率な例)
result = ""
for i in range(1000):
result = result + str(i)
# 効率的な方法(joinを使用)
numbers = [str(i) for i in range(1000)]
result = "".join(numbers)
print(f"結合された文字列の長さ: {len(result)}")

大量の文字列を結合するときは+演算子よりjoinが効率的です。 +演算子は毎回新しい文字列を作るので、メモリを多く使ってしまいます。

joinメソッドは一度に全部結合するので速いんです。 たくさんの文字列を扱うときは覚えておきましょう。

リスト結合のパフォーマンス

# リスト結合の効率的な方法
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# +演算子(新しいリストを作成)
combined1 = list1 + list2
# extendメソッド(既存リストに追加)
list1.extend(list2) # list1が変更される
print(f"combined1: {combined1}") # [1, 2, 3, 4, 5, 6]
print(f"list1: {list1}") # [1, 2, 3, 4, 5, 6]

リストの場合も、用途に応じて使い分けましょう。 新しいリストが欲しいときは+演算子を使います。

既存のリストに追加したいときはextendメソッドが効率的です。 元のリストが変更されるので注意が必要ですが、メモリ使用量は少なくなります。

エラーが起きたときの対処法

+演算子を使っているとエラーが発生することがあります。 よくあるエラーとその対処法を見てみましょう。

型の不一致エラー

# 型の不一致によるエラー
def safe_addition(a, b):
try:
return a + b
except TypeError as e:
print(f"型エラー: {e}")
return None
# テスト
print(safe_addition(10, 20)) # 30
print(safe_addition("Hello", " World")) # Hello World
print(safe_addition([1, 2], [3, 4])) # [1, 2, 3, 4]
print(safe_addition(10, "Hello")) # 型エラー

違う型同士で+演算子を使うとエラーが発生します。 try-except文を使ってエラーを捕捉できます。

このような関数を作っておくと、エラーで止まらずに処理を続けられます。 実際の開発では、エラーハンドリングが重要です。

メモリ使用量に注意

# 大きなリストの結合時の注意点
def combine_large_lists():
large_list1 = list(range(1000000)) # 100万個の要素
large_list2 = list(range(1000000)) # 100万個の要素
# +演算子は新しいリストを作成(メモリ使用量が増加)
combined = large_list1 + large_list2
print(f"結合されたリストの長さ: {len(combined)}")
# メモリ効率を考慮した処理が必要
print("大きなデータの結合時はメモリ使用量に注意が必要です")

大きなデータを結合するときは、メモリ使用量に気をつけましょう。 +演算子は新しいデータを作るので、メモリを多く使います。

元のデータが大きいと、メモリ不足になることもあります。 データサイズを考慮して適切な方法を選びましょう。

まとめ

Pythonの+演算子について詳しく説明しました。

+演算子は数値計算だけでなく、文字列やリストの結合にも使えます。 データ型によって動作が変わるので、それぞれの特徴を理解することが大切です。

実際の開発では、データの集計、ファイルパス構築、リストの統合など様々な場面で活用できます。 エラーハンドリングやパフォーマンスも考慮して、適切に使い分けましょう。

+演算子をマスターすれば、Pythonプログラミングがもっと楽しくなりますよ! ぜひ実際のプログラムで試してみてください。

関連記事