Python3関連のことを調べてみた

Python3関連のことを調べてみた

Xarray と julia (NCDatasets) の対応

## はじめに
 juliaのnetcdfデータを扱うパッケージに[NCDatasets](https://alexander-barth.github.io/NCDatasets.jl/stable/)がある。doiも発行されている([https://doi.org/10.21105/joss.06504](https://joss.theoj.org/papers/10.21105/joss.06504))。
 pythonのnetCDF4に相当すると思われるが、比較する記事を見つけられなかった。自分も含め、netCDF4よりもxarrayを使う人もいると思うので、ここでは**ごく基本的なxarrayの関数とNCDatasetsの関数をなんとなく対応させること**を目指してまとめた。(用語や文法の説明は適当です。気が向けば追記します。)

## NCDatasetsのインストール
juliaは導入済みを想定
まずターミナルでjuliaのREPLを起動
“`bash
$ julia
“`
のち
“`julia:julia(REPL)
julia> using Pkg
jul

元記事を表示

Python:二次元リストを作る際の注意点

# 二次元リストを作る際の注意点

皆さん、二次元リストを書く際、どのように記述していますか?
恐らく多くの人が以下のようにfor文を用いて記述していると思います。

“`py
fields=[[0 for _ in range(4)] for _ in range(4)]
print(fields)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
“`

ただ、二次元リストを作るだけなら以下のようにも記述できますよね。

“`py
fields=[[0]*4]*4
print(fields)
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
“`

リストの中身にもよりますが、状況によっては下のコードの方が、短く済みそうですよね。
しかし、実は下のコードは二次元リストとしての役割を果たしていません。
試しにリストの中身を更新してみます。
まずは、for文で書いた二次元リストから更新します。

“`py
fields=[[0 for _

元記事を表示

is や not などは値の計算には使わない

## TL;DR

– `is` や、`is not` はオブジェクトの同一性を判定するための演算子(Identity operator, 同一性演算子)
– 同一性演算子は数値計算には使わないほうがよい

## 事例

とあるPythonコード

“`python
a = 255
b = 1
a + b is a + b
True
b = 2
a + b is a + b
False
“`

### ポイント

– 数は違うが同じ値を比較している
– `is` や、`is not` を比較している

### なぜなのか

– `is` や、`is not` は同一性演算子(Identity operator)とよばれ、値ではなく更に厳密にオブジェクトが同じかを判定する
– 数を足したり引いたりしたものを比較する際にも、Pythonでは新たにオブジェクトが作成される
– Pythonでは、すべてのリテラル(数値や文字列)に対してオブジェクトが作成される
– ***ただし最初の部分ではインターンされているため最初の結果がTrueとなる***

### インターンとは

– 頻

元記事を表示

WindowsPCでJupyterLabを始める(Miniconda利用)

# 概要
Minicondaを利用して、WindowsPCでJupyterLabを使えるようにする手順です。

JupyterLabはPythonの統合開発環境(IDE)で、データ解析や機械学習のためのコード作成、実行、共有を簡単に行うことができます。

# ゴール
JupyterLabでNotebookを新規作成し、動作確認までを行います。

# 手順

### 1. Minicondaのインストール
– [Minicondaのダウンロードページ](https://docs.conda.io/en/latest/miniconda.html)からWindows用のインストーラをダウンロードする
– インストーラをダブルクリックして起動し、指示に従ってMinicondaをインストールを進める

### 2. Minicondaのパスを環境変数に追加
– インストールが完了したら、コマンドプロンプトを開く
– 以下のコマンドを実行して、Minicondaのパスを環境変数に追加する
※ `u-data` の部分は、自分のユーザーネームに置き換えてください。

“`
setx

元記事を表示

Python学習で僕がやったことを公開

# Pythonプログラミングチュートリアル

こんにちは!
私はPython未経験から案件に入ったのですが、同じ体験をする人がいるかもしれないので僕が案件参画までにやったことをまとめました。

以下にチュートリアル的な感じで作成しているのでやってみて下さい。

https://github.com/masakiShito/python-tutorial

この記事では、私が作ったチュートリアルの概要を説明します。

## 対象読者

このチュートリアルは、以下のような読者を対象としています。

– Pythonプログラミングを初めて学ぶ初心者
– 基礎的なPythonスキルを磨きたい中級者
– 実際のプロジェクトでPythonを活用したいと考えている方
– Pythonの標準ライブラリや応用例を学びたい方

## チュートリアルの意図

このチュートリアルを作成した意図は、以下の通りです。

1. **基礎から応用まで一貫した学習**:
– Pythonの基礎から始めて、オブジェクト指向プログラミングや例外処理、標準ライブラリの使い方まで体系的に学べるように構成しています。

元記事を表示

【Game A Week:一週目】スライドパズルを作ってみた

## はじめに
普段はPHPなどを使ってwebアプリ開発を行っていますが他の技術も身に着けたいのでGame A Weekに挑戦しようと思います。

## Game A Weekとは
「Game A Week」とは一週間でゲームを1つ作って、ゲーム開発の経験値を上げる方法として、オランダのインディー系デベロッパー「Vlambeer」のRami Ismail氏が提唱したものです。詳細については以下の記事を読んでみてください。

https://note.com/syun77/n/n8063d509a864

## 振り返り
### Idea
スライドパズルを作成しました。
![スライドパズル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2954837/43461242-6d15-49fa-ac12-9300923add55.png)

https://github.com/eyamagishi/slide_puzzle

### What I learned
– Pythonを使用しての開発
– Pyga

元記事を表示

競技プログラミングで使えるPython計算のTips

# モチベーション

最近(今更)AtCoderを本格的に始めた者です。
AtCoder Beginner Contestで300~400点程度の問題をしっかり取れるようになることを目標に頑張っています。

解けなかった問題に対して解説を読んで復習をするときに、

「この解説と同じような理論で実装してるはずなのにTLEになってしまう」
「やりたいことはわかるけど書かなければいけないプログラミングの行数が多すぎる」

ってことありませんか?筆者は滅茶苦茶ありました。

そこで、「実はこうすると速いんだよ」っていうTipsをここでまとめておきます。ほぼ筆者の備忘録用ですが皆さんの参考になれば幸いです。

## ビット演算

N個のものがそれぞれあるかないか、本当かウソか、真か偽かなどを扱う問題で$2^N$通りを全探索する場合などがあります。このとき、筆者はこんな面倒くさいコードを書いてしまっていました↓

“`python
lst = []
for i in range(2**N):
s = bin(i)[2:] # bin(2) = ‘0b10’
while(len(

元記事を表示

VSCode の拡張機能 Flake8 と autopep8 に pyproject.toml を読み込ませる

VSCode の拡張機能 **Flake8**, **autopep8** では`settings.json`で各種設定が可能です

“`settings.json
{
“[python]”: {
“editor.defaultFormatter”: “ms-python.autopep8”
},
“autopep8.args”: [
“–aggressive”,
“–indent-size”,
“4”,
“–max-line-length”,
“119”,
“–ignore=E111, E114, E402, E501”
],
“flake8.args”: [
“–ignore=W293, W504, E111, E114, E402, E501”
]
}
“`

しかし,Poetry のプロジェクトのような場合には`pyproject.toml`に設定を記載することが多いかと思います
その場合,

元記事を表示

文系SEがPythonエンジニア認定実践試験受けてきた

# Python3エンジニア認定実践試験の体験記です。

2024年5月3週目にPython認定実践試験を受験して合格しました。
まだまだインターネット上にPythonエンジニア認定実践試験を受験したナレッジが少ないように感じました。
受験規約により試験問題を記載することは出来ませんが、私が受験した試験の感想を残し、これから受験する皆様の参考になればと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596363/96d94ac8-ae67-92f5-20da-16bea35c2083.png)

# 私のスペック

私は文系学部の大学を卒業した後、公務員を経て転職し、IT企業(SES)で6年目になります。IT業務の経歴は、インフラ系に身を置いた後、アプリ開発のプロジェクトを担当していました。
がっつりプログラミングする経験はありませんでした。
現在はRaspberryPiを用いたWeb Script業務をしています。

当時は業務でPythonを触る機会はなかったのですが、プ

元記事を表示

絵文字を一文字ずつ処理する方法

# 結論
[emojiモジュール](https://pypi.org/project/emoji/)を使うと、できます。
“`python
import emoji
text=”👧🏻”
emoji.replace_emoji(text,replace=lambda e, data_dict:print(e,end=” “))
# 👧🏻
“`
# 解説

一般的に、Pythonで一文字ずつ処理したい場合、これでいけます。
“`python
text=”ABCD”
[print(e,end=” “) for e in list(text)]
#A B C D
“`
しかし、ZWJ emojiが含まれている状態で行うとうまくいきません。
“`python
text=”👧🏻”
[print(e,end=” “) for e in list(text)]
# 👧 🏻
“`

## 参考
https://carpedm20.github.io/emoji/docs/#non-rgi-zwj-emoji

元記事を表示

Pythonでprintデバッグから卒業する【VSCode・CursorでPythonのデバッグ】

# はじめに
CやC++においてVSCodeの拡張でデバックを行ったことがあるのですが、Pythonでも簡単に導入できたので記事にしました。

:::note warn
注意
VSCodeと書いていますが、実際にはCursorを使用しています。どちらでもほぼ同じ形で使用できると思います。
:::

VSCodeのデバックを導入することで出来るようになること
1. 全ての変数の値がわかる
1. ブレークポイントを設定して、プログラムを途中で止めながら順番に確認する事ができる
1. print文を書かなくて良くなる

# 導入

VSCodeの拡張機能をインストールします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085757/59b6d8e3-ce27-5050-653a-1834c9004f9d.png)

画面左側の「launch.jsonファイルを作成します」をクリックすると、今開いているプロジェクトのルートに`.vscode`ディレクトリと`launch.json`が作成

元記事を表示

Anaconda(conda) / Python / PyPI(pip) コマンド比較

# 概要
Anaconda(conda) / Python / PyPI(pip) コマンドを比較しました。
###### 表1. コマンド情報
|コマンド|バージョン|備考|
|:–|:–|:–|
|conda|24.1.2[^1]|Anaconda|
|python|3.9.18[^2]|Python|
|pip|21.2.3[^2]|PyPI|
# Anaconda と Python コマンドの比較
###### 表2. Anaconda / Python コマンド情報
|用途|Anaconda ( conda コマンド)|Python ( python コマンド)|
|:-|:-|:-|
|仮想環境作成|\\$ conda create –name <仮想環境名> python=<Pythonバージョン番号>

例)
\\$ conda create –name testEnvAna01 python=3.11
\\$ conda create –name testEnvAna02 python=3.6|\\$ pyt

元記事を表示

[Python3][Linux]画像サイズを一括変換する方法

## 要 旨
Linux下においてPython3を使用して画像サイズを一括変換する方法について記述します。
## 実施要領
### 準備
作業用フォルダimage_resizeの作成
“`linux
mkdir image_resize
“`
作成したimage_resizeフォルダ内に入る。
“`
cd image_resize
“`

仮想環境venv構築
“`
python -m venv .venv
“`
仮想環境のアクティブ化を実施
“`
source ./.venv/bin/activate
“`
画像処理に便利なPIL(Python Image Library)をインストールする。
“`
pip install pillow
“`
画像サイズを320×320に一括変換する処理を含ませたpythonコードを作成する。
なお変換可能な画像の型式は、png、jpg、jpegである。
“`python3:resize.py
from PIL import Image
import os

def resize_images(input_dir, output

元記事を表示

ターミナル文字列出力時、かっこいいエフェクトを追加する

## はじめに
とにかくかっこいい見た目が好きなので、ターミナル・かっこいい・エフェクトというワードを見つけたので、やってみました。

ターミナルの文字列出力にかっこいいエフェクトを追加できるライブラリ「TerminalTextEffects」

https://gigazine.net/news/20240529-terminal-text-effects/

## 環境
– WSL2(Linux-Ubuntu)
– python3が必要

## TerminalTextEffectsインストール

“`bash:WSL2:Ubuntu
# アップデート
sudo apt update
sudo apt upgrade -y

# pipxのインストール
sudo apt install pipx -y

# terminaltexteffectsのインストール
pipx install terminaltexteffects

# パスを通す
pipx ensurepath
“`

ターミナルを再起動が必要

## ScreenFetchインストール

紹介されていた記事で使

元記事を表示

Openpyxl: シートのコピー

file_a.xlsx のシート1を、file_b.xlsx にコピーする方法です

## プログラム

“`py:sheet_copy.p
#! /usr/bin/python
# —————————————————————
# sheet_copy.py
#
# May/31/2024
# —————————————————————
import sys
import openpyxl
from openpyxl.styles import Border, Side, Alignment, Font

# —————————————————————
xlsx_in=sys.argv[1]
xlsx_out=sys.argv[2]
#
sheettitle = ‘コード一覧’

wb1 = openpyxl.load_work

元記事を表示

python-lambda-local を使って AWS Lambda 関数をローカル環境で実行する

# はじめに
Lambdaのプログラムをテストする際、毎回 Lambda 関数を更新して実行するのは面倒ではないですか?
そこで良い方法ないかなと調べていたところ、 **python-lambda-local** というツールを知りました。

https://github.com/HDE/python-lambda-local

# 仕様
Python 3.7+
今回試した環境のバージョンは 3.9.6 でした。
“`bash:バージョン
$ python3 –version
Python 3.9.6
“`

# インストール
pip でインストールすれば完了です。

“`bash:インストール
$ pip install python-lambda-local
“`

# オプション
使い方とオプションは以下になります。

“`bash:使い方
$ python-lambda-local [-h] [-l LIBRARY_PATH] [-f HANDLER_FUNCTION]
[-t TIMEOUT] [-a ARN_ST

元記事を表示

Macでのpython-axolotl-curve25519インストール時のエラー対処

#### 前置き
この前、MacBook Proでpython-axolotl-curve25519をインストールしようとしたら、エラーが出たので対処法を書き留めておく。
github: https://github.com/tgalal/python-axolotl-curve25519

### エラー内容
“`
DEPRECATION: Loading egg at /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/python_axolotl-0.2.3-py3.11.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.. Discussion can be found at https://github.com/pypa/pip/issues/12330
Collect

元記事を表示

【Python】Lambda Layerの作成方法

# Lambda Layerを作成したいがめんどくさい
Lambda LayerはAWS Lambdaに標準で用意されていないライブラリや自分で作成した関数などを取り込む際に利用します。
一見zipファイルを作成してアップロードするだけなんですが、いくつか落とし穴があります
– Amazon Linuxで作成する必要がある(場合がある)
– LambdaはAmazonLinuxで動いている
– macOSなどでインストールしたものがAmazonLinuxで動かない場合があるため
– 求められるディレクトリ構造が実はある
– apiでのzipアップロードはファイルサイズの制限がある

などなどで躓いたのでやり方をまとめておきます

## AmazonLinuxでのpython実行環境の用意
構築方法は別記事にまとめました。ローカル環境(macOSやWindows)でインストールしたライブラリをアップロードすると、動くときもありますが動かないときもあります。仮に動いたとしても、基本的にはAmazonLinuxで作成するほうが良いでしょう。
pythonはLambdaで使用す

元記事を表示

Anacondaで実行可能なPython(バージョン)の検証

# 目的
Anaconda3[^1]で実行できるPythonのバージョンを検証してみます[^2]
[^1]:Anacondaとは、Anaconda社によって開発、配布されているPythonディストリビューションです
[^2]:検証モジュール:Anaconda3-2024.02-1-Linux-x86_64.sh

# AnacondaとPyPIについて
バージョン違いのPython実行用環境を複数用意しようとした場合、Anacondaの方が簡単に環境構築できます。Anacondaをインストールするだけで、condaコマンドを使って異なるバージョンのPython実行環境を構築できます。

一方、Anacondaと比較されることがあるPyPIで同じことを実施しようとした場合、手動でバージョン管理を行う必要があります。バージョン毎に公式サイトからPythonをダウンロードしてインストールしなければなりません。

# Anacondaインストール方法
###### インストール環境
* Red Hat Enterprise Linux 9.4
* Anaconda3-2024.02-1-Lin

元記事を表示

メールログからFWにて怪しいIPをブロック

# メールログから怪しい国外IPアドレスを取得しブロックする方法

このスクリプトは、メールログから取得したIPアドレスをファイアウォールでブロックします。
日本国内のIPアドレス範囲に該当するIPは除外し、それ以外のIPをブロックします。

## 1. Pythonスクリプト (`/root/fw_script/deny_ip.py`)

“`python
“””
deny_ip.py
このスクリプトは、メールログから取得したIPアドレスをファイアウォールでブロックします。
日本国内のIPアドレス範囲に該当するIPは除外し、それ以外のIPをブロックします。
“””

import ipaddress
import subprocess
import datetime

log_entries = []

def log(message):
print(message) # コンソールに出力
log_entries.append(message) # ログエントリに追加

# 日本のIPアドレス範囲を読み込み
with open(‘/root/fw_script/

元記事を表示

OTHERカテゴリの最新記事