目的
鳥頭のため、ちょっと書いてないだけで基礎的な記法も忘れる始末。
一覧
json
JSONデータのシリアライズ(PythonオブジェクトをJSON文字列に変換)
import json
data = {
"name": "Example Item",
"price": 19.99,
"in_stock": True
}
# JSON文字列に変換
json_data = json.dumps(data)
print(json_data) # {"name": "Example Item", "price": 19.99, "in_stock": true}
JSONデータのデシリアライズ(JSON文字列をPythonオブジェクトに変換)
# JSON文字列
json_data = '{"name": "Example Item", "price": 19.99, "in_stock": true}'
# Pythonオブジェクトに変換
data = json.loads(json_data)
print(data) # {'name': 'Example Item', 'price': 19.99, 'in_stock': True}
JSONファイルの読み込みと書き込み
# JSONファイルに書き込み
with open("data.json", "w") as f:
json.dump(data, f)
# JSONファイルから読み込み
with open("data.json", "r") as f:
data_from_file = json.load(f)
print(data_from_file)
日付と時間の操作
from datetime import datetime, timedelta
# 現在の日付と時間
now = datetime.now()
# 日付のフォーマット変更
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
# 特定の日付までの加算
future_date = now + timedelta(days=7)
リスト操作、表記
リストへの追加・削除
my_list = [1, 2, 3]
# 末尾に追加
my_list.append(4) # [1, 2, 3, 4]
# 特定の位置に挿入
my_list.insert(1, 'a') # [1, 'a', 2, 3, 4]
# 特定の要素を削除
my_list.remove('a') # [1, 2, 3, 4]
# 最後の要素を取り出して削除
last_element = my_list.pop() # 4, 残りは [1, 2, 3]
スライス
my_list = [1, 2, 3, 4, 5]
# 最初の3つの要素
first_three = my_list[:3] # [1, 2, 3]
# 最後の2つの要素
last_two = my_list[-2:] # [4, 5]
# 一定間隔での取得
every_second = my_list[::2] # [1, 3, 5]
リスト内包表記とフィルタリング
# リストから偶数のみ抽出
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]
map記法
# リストの要素を二乗
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16]
filter関数
# 偶数のみ抽出
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4]
reduce関数
from functools import reduce
# リスト内の全要素の積
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers) # 24
CSVファイルの読み書き
import csv
# CSVの読み込み
with open('data.csv', 'r') as file:
reader = csv.reader(file)
data = [row for row in reader]
# CSVへの書き込み
with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Name', 'Age'])
writer.writerow(['Alice', 30])
writer.writerow(['Bob', 25])
クラス
サンプルクラス
class Animal:
species = "Mammal" # クラス変数: すべてのインスタンスで値を共有
def __init__(self, name):
self.name = name # インスタンス変数: インスタンスごとに値が異なる
self._name = f"{name}_private"
@property # propertyデコレータによって、メソッドを属性のように扱える
def name(self): # ゲッター
return self._name
@name.setter
def name(self, value): # セッター
if isinstance(value, str) and value:
self._name = value
else:
raise ValueError("Name must be a non-empty string")
@classmethod
def set_species(cls, species_name):
cls.species = species_name
@staticmethod
def is_animal():
return True
cat = Animal("Whiskers")
dog = Animal("Buddy")
print(cat.species) # Mammal
print(dog.species) # Mammal
print(cat.name) # Whiskers
print(dog.name) # Buddy
# クラス変数を変更
Animal.species = "Bird"
print(cat.species) # Bird
print(dog.species) # Bird
# クラスメソッドの呼び出し
Animal.set_species("Reptile")
print(Animal.species) # Reptile
# 静的メソッドの呼び出し
print(Animal.is_animal()) # True
cat.name = "Bob" # セッターを使用して値を設定
print(cat.name) # Bob
特殊メソッド(マジックメソッド)
Pythonでは、init, str, repr などの特殊メソッド(ダンダーメソッド)があり、特定の操作や組み込み関数をオーバーライドできる
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"{self.title} by {self.author}" # print()での表示
def __repr__(self):
return f"Book({self.title!r}, {self.author!r})" # オブジェクトの公式な文字列表現
book = Book("1984", "George Orwell")
print(book) # 1984 by George Orwell
print(repr(book)) # Book('1984', 'George Orwell')