【python】ひとつひとつトピックを立てるまでもない備忘録
1. 基礎の基礎編
なんか時々訳がわからなくなるので。
list型の初期化は [] で行う。
dict型の初期化は {} で行う。
例:
alist: list = []
adict: dict = {}
2. list型の重複チェック
if ~ in ~ を使うことで重複チェックができる
例:
if selected_tag not in self.selectedTags:
self.selectedTags.append(self.cmbTags.currentText())
3. range
for文で指定の回数だけループをしたい場合はrange関数を使用する
例:
# タグ一覧を取得
for row in range(self.selected_tag_model.rowCount()):
index = self.selected_tag_model.index(row, 0)
tag = self.selected_tag_model.data(index)
tags.append(tag)
4. enumerate
ラジオボタンをグループ化して、状態が変化したときに選択されたボタンに応じて処理を行いたい場合、enumerateを使用することで、ラジオボタンだけではなく、インデックスも同時に取得することができる。
# 出力方法のラジオボタンをグループ化する
self.group = QButtonGroup()
self.group.addButton(self.rbText)
self.group.addButton(self.rbCSV)
# ラジオボタンの値をチェックし、編集対象のブラウザを特定する
for row, rbbrowser in enumerate(buttons):
# チェックがついている要素に該当するブラウザのドライバーを更新する
if rbbrowser.isChecked():
browser = self.work_driverPaths[row]
browser["path"] = driver_path
self.work_driverPaths[row] = browser
# ドライバーパスのラベルを更新する
self.updateBrowserDriverLabel()
5. list型データの重複排除
list型のデータから重複を排除する方法は以下の通りです。
一次元配列の場合
set関数を利用する。
コパイロットのぴ◯ょん君の回答: enumerate はPythonの組み込み関数で、イテラブルなオブジェクトを数えながら繰り返し処理するのに役立つよ!✨
# データ
['apple','microsoft','microsoft','google'...]
# 重複排除方法
csv_vender = list(set(wk_vender))
二次元配列の場合
tuple型に変換してからset関数で重複を排除します。
# データ
[['apple','mac os'],['microsoft','windows'],['microsoft','excel'],['google','android'],...]]
# 重複排除方法
csv_product = [list(x) for x in set(tuple(row) for row in wk_product)]
6. if 文の途中で改行する
if 文が長くなり過ぎて途中で改行したい場合などは\(バックスラッシュ)で区切ることで if構文を維持したまま改行できます。
# 質問、回答、タグが選択されている場合、作成するボタンを活性化する
if appname.strip() != "" and vender.strip() != "" and product.strip() != "" and \
version.strip() != "" and platform.strip() and type.strip() != "" and \
edition.strip() != "":
self.pbEntry.setEnabled(True)
pandasライブラリのDataFrameのデータを1行ずつ取得する
DataFrame内のデータを1行ずつ取得したい場合はiterrowsメソッドを使用します。
import pandas as pd
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35],
"city": ["Tokyo", "Osaka", "Nagoya"]
})
for index, row in df.iterrows():
print(index, row["name"], row["age"], row["city"])
7. VBAのmid的な機能
サブタイトルの通り。VBAでいうところのmid的な機能です。
text = "ABCDEFG"
result = text[1:4] # 2文字目(インデックス1)から3文字分
print(result)
pandasライブラリのDataFrameのデータを1行ずつ取得する
例では2文字目(添字1)から4文字目(添字4)までを取得しています。
パッと見ると5文字目まで取得するんじゃないの?と見えますが、添字4の直前のデータまで取得をするのだそうです。
ちょっとわかりづらいですね。
8.Pathの表記を整える。
ソースファイルの存在するパスを取得して、その上位階層のパスを取得したい時に「/Users/user/Developer/App/source/../../log」みたいな強引なプログラムを組んでしまったのですが、それを整える方法。
# pathlib の Pathクラスをインポート
from pathlib import Path
# 現在のスクリプトが存在するディレクトリを取得
current_folder = os.path.dirname(os.path.abspath(__file__))
# アプリケーションのディレクトリを取得する
log_path = os.path.join(current_folder, "../../logs")
# パス表記を整える
log_path = Path(log_path).resolve()
#出力結果
> /Users/user/Developer//log
コメント
コメントを投稿