« 2025年2月 | トップページ | 2025年4月 »

2025年3月22日 (土)

[Python]オブジェクトのブール値(真偽)を調べる

bool関数を使う。引数に与えたオブジェクトがTrue(真)かFalse(偽)のどちらか判定して返す。

>>> bool(0)
False
>>> bool(1)
True
>>> bool(0)
False
>>> bool(1)
True
>>> bool(0.0)
False
>>> bool(1.2)
True
>>> bool('')
False
>>> bool('鈴木みのりさん、かわいい')
True
>>> bool([])
False
>>> bool(['セナディア', 'フレイア'])
True

公式のウェブサイトの説明によると、以下のオブジェクトが偽になるとのこと。

  • NoneとFalse(constants defined to be false: None and False)
  • 数値型の0(zero of any numeric type: 0, 0.0, 0j, Decimal(0), Fraction(0, 1))
  • 空のシーケンスとコレクション(empty sequences and collections: '', (), [], {}, set(), range(0))

2025年3月19日 (水)

[Python]1行に複数の文(statement)を書く

スクリプトでも対話型実行環境でも、;記号(セミコロン)を使うことで1行に複数の文(statement)を書くことができる(Several simple statements may occur on a single line separated by semicolons.)。以下は、対話型実行環境で行った例。

>>> s1 = 'ウマ娘のメイショウドトウ役の'; s2 = '和多田美咲さん'; s3 = 'かわいい'
>>> print(s1 + s2 + s3)
ウマ娘のメイショウドトウ役の和多田美咲さんかわいい

2025年3月18日 (火)

[Python]変数の型を調べる

type関数を使う。引数に変数を指定する。

>>> n = 1; d = 2.3; s = 'スノウブレイクのリフ'; b = True;
>>> type(n)
<class 'int'>
>>> type(d)
<class 'float'>
>>> type(s)
<class 'str'>
>>> type(b)
<class 'bool'>
>>> type(len)
<class 'builtin_function_or_method'>

type関数にはリテラルも指定することができる。

>>> type(1)
<class 'int'>
>>> type(2.3)
<class 'float'>
>>> type('スノウブレイクのリフ')
<class 'str'>
>>> type(True)
<class 'bool'>

 

2025年3月12日 (水)

[Python]リストに要素を追加する

既存のリストに要素を追加するには、+=演算子かappendメソッドを使う。いずれの方法も最後の要素の後にその要素が追加される。これを、任意の位置に追加したい場合は、insertメソッドを使う。第一引数に指定した数値がインデックスになるように要素が追加される。

>>> s = ['スノウブレイク']
>>> s += ['瀬戸麻沙美さん']
>>> s.append('かわいい')
>>> print(s)
['スノウブレイク', '瀬戸麻沙美さん', 'かわいい']
>>> s.insert(1, 'リフ-ムゲン知眼')
>>> print(s)
['スノウブレイク', 'リフ-ムゲン知眼', '瀬戸麻沙美さん', 'かわいい']
>>> len(s)
4

2025年3月11日 (火)

[Anaconda]インストールされているパッケージを確認する

condaコマンドのlistサブコマンドは、その仮想環境にインストールされているパッケージを表示する。

(base) >conda list
# packages in environment at C:\Users\○○○\anaconda3:
#
# Name Version Build Channel
_anaconda_depends 2024.10 py312_mkl_0
aiobotocore 2.12.3 py312haa95532_0
aiohappyeyeballs 2.4.0 py312haa95532_0
(以下、表示省略)

大量に表示されるため、コマンドプロンプトであればfindstrコマンドなどとの併用を推奨する。

(base) >conda list | findstr "numpy"
numpy 1.26.4 py312hfd52020_0
numpy-base 1.26.4 py312h4dde369_0
numpydoc 1.7.0 py312haa95532_0

2025年3月10日 (月)

[Python]ファイルやディレクトリのパスを連結する

osモジュールのpath.join関数を使う。以下は、自動的に削除される一時ディレクトリを利用して、temp1.txtとtemp2.txtという2つのファイルについてパスを連結して出力と読み込み行った例。文字コードはUTF-8にしてpathjoin.pyと保存する。一方はpath.join関数を使って連結し、もう一方は+演算子を使用して手動で文字列として連結して行っている。いずれも問題なく読み書きできることが分かる。

ソースコード

# coding=utf_8
import os
import tempfile
with tempfile.TemporaryDirectory() as tempd:
with open(os.path.join(tempd, 'temp1.txt'), 'w+t') as f1:
with open(tempd + os.path.sep + 'temp2.txt', 'w+t') as f2:
print('[一時ファイル1と2の作成]')
print(f1.name)
print(f2.name)
print('[一時ファイル1への書き出し]')
f1.write('スノウブレイクのリフ-ムゲン知眼役の瀬戸麻紗美さん')
f1.write('かわいい')
print('[一時ファイル2への書き出し]')
f2.write('マクロスΔのフレイア役の鈴木みのりさん')
f2.write('かわいい')
f1.seek(0)
f2.seek(0)
print('[一時ファイル1と2からの読み込み]')
print(f1.read())
print(f2.read())

実行結果

(base) >python pathjoin.py
[一時ファイル1と2の作成]
C:\Users\○○○\AppData\Local\Temp\○○○\temp1.txt
C:\Users\○○○\AppData\Local\Temp\○○○\temp2.txt
[一時ファイル1への書き出し]
[一時ファイル2への書き出し]
[一時ファイル1と2からの読み込み]
スノウブレイクのリフ-ムゲン知眼役の瀬戸麻紗美さんかわいい
マクロスΔのフレイア役の鈴木みのりさんかわいい

2025年3月 6日 (木)

[Python]環境変数を取得する

osモジュールのenvironオブジェクトを参照する。以下はWindows環境下で行った例。Windowsの仕様として、大文字小文字は区別しない。存在しない環境変数を指定した場合はNoneが返される。

>>> import os
>>> print(os.environ.get('HOMEDRIVE'))
C:
>>> print(os.environ.get('WINDIR'))
C:\Windows
>>> print(os.environ.get('windir'))
C:\Windows
>>> print(os.environ.get('windows'))
None

2025年3月 5日 (水)

[Python]行列のアダマール積を求める

*演算子を使う。それぞれndarray型を指定する。

>>> import numpy as np
>>> mxxx = np.array([[1, 2, 3], [2, 3, 4], [2, 5, 6]])
>>> print(mxxx)
[[1 2 3]
[2 3 4]
[2 5 6]]
>>> mxxx * mxxx
array([[ 1, 4, 9],
[ 4, 9, 16],
[ 4, 25, 36]])

2025年3月 3日 (月)

[Python]行列の積を求める

行列Aと行列Bの積ABを求めるには、numpyモジュールのdot関数を使う。引数にそれぞれndarray型を指定する。行列の乗法は、左側の行列Aの列の数と右側の行列Bの行の数が一致している場合のみ求めることができる(そのような定義になっている)。左右の列数と行数が一致しない場合はエラーが発生する。

>>> import numpy as np
>>> mxaa1 = np.array([[1, 2, 3], [2, 3, 4], [2, 5, 6]])
>>> mxbb1 = np.array([[1, 0, 1], [0, 1, 0], [0, 1, 1]])
>>> print(mxaa1)
[[1 2 3]
[2 3 4]
[2 5 6]]
>>> print(mxbb1)
[[1 0 1]
[0 1 0]
[0 1 1]]
>>> np.dot(mxaa1, mxbb1)
array([[ 1, 5, 4],
[ 2, 7, 6],
[ 2, 11, 8]])
>>> mxaa2 = np.array([[1, 0, 1], [0, 1, 0]])
>>> mxbb2 = np.array([[1, 2], [0, 1], [0, -2]])
>>> print(mxaa2)
[[1 0 1]
[0 1 0]]
>>> print(mxbb2)
[[ 1 2]
[ 0 1]
[ 0 -2]]
>>> np.dot(mxaa2, mxbb2)
array([[1, 0],
[0, 1]])

2025年3月 2日 (日)

[Python]行列のスカラー倍を求める

ndarray型に*演算子を使う。それぞれスカラー(数や関数のこと)と行列を指定する。

>>> import numpy as np
>>> a = 3
>>> mxxx = np.array([[1, 2, 3], [2, 3, 4], [2, 5, 6]])
>>> print(mxxx)
[[1 2 3]
[2 3 4]
[2 5 6]]
>>> a * mxxx
array([[ 3, 6, 9],
[ 6, 9, 12],
[ 6, 15, 18]])

« 2025年2月 | トップページ | 2025年4月 »

無料ブログはココログ

■■

■■■