Python3関連のことを調べてみた2022年12月11日

Python3関連のことを調べてみた2022年12月11日

pybind11に入門してみた話

# はじめに
こちらの記事は、[eeic (東京大学工学部電気電子・電子情報工学科) Advent Calendar 2022](https://qiita.com/advent-calendar/2022/eeic) の 11 日目の記事として書かれたものです。

pybind11 という Python のライブラリを初めて使ってみたので、その紹介を簡単にしようと思います。

# pybind11 とは
Python に C++ の関数やクラスを組み込めるライブラリです。
Python3.6+ と C++ の標準ライブラリのみに依存しているため、余計な依存関係をないのがポイントです。
古いコンパイラを無視して C++11 で書かれたものに限定することによって、軽量なヘッダのみのライブラリとすることができたらしいです。
詳しくは [公式ドキュメント](https://pybind11.readthedocs.io/en/stable/index.html) をご覧ください。チュートリアルも充実しています。

# 自作ライブラリの作成
`pybind11_demo` というライブラリを作

元記事を表示

リストすべてをstr型からint型を相互に変換する方法

## Map関数を使う
map関数とはリストないすべての要素に関数を適用するというものである。

例えば list1[ ‘1’, ‘1’, ‘1’, ‘1’]というリストが有った場合
list1 = map(int , list1)をすることですべて整数型にすることができる。
もちろん逆も同じようにすれば簡単にできる。

元記事を表示

【AtCoder】ABC281のA,(B),C,D における Python解説

ABC281のA,(B),C,D問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、diffは問題の難易度を表す指標です。[Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 855](https://atcoder.jp/users/tsuru1471)
22/1210 現在

# 目次
[はじめに](#はじめに)
[A.Count Down](#acount-down)
[B.Sandwich Number](#bsandwich-number)
[C. Circular Playli

元記事を表示

Unknown encoder ‘pcm_s4le’

python の AudioSegment.from_file で `Unknown encoder ‘pcm_s4le’` というエラーがでる。

https://stackoverflow.com/questions/67069960/pydub-error-loading-file-unknown-encoder-pcm-s4le

これなんだけど

なので、

“`python
from pydub import AudioSegment
import soundfile as sf

filen = ‘orig.wav’
fileo = ‘converted.wav’

f = sf.SoundFile(filen)
print(f.format, f.subtype, f.endian)

sig, sr = sf.read(filen)
print(sr)

sf.write(fileo, sig, sr, format=”wav”, subtype=’PCM_16′)

as = AudioSegment.from_file(fileo, format=”wav”)

元記事を表示

【Python】勉強メモ(listについて)-その1

### 1.はじめに

プログラミングを勉強していると、配列が物凄く重要ということが分かってきました。
ただ、配列は、使いこなせるまで、相当勉強が必要だと感じています。
勉強した結果を少しでもOutputし、定着させるため、本記事を書きます。
よって、完全な自己満となります。

ただ、もっとこうすべき、もっとこういうやり方があるよ!とか、基礎が分かってないんじゃない?
という様なご意見も歓迎致しますので、沢山、ご意見いただければと思います。

### 2.一次元配列
pythonで配列の基礎を学習する時、だいたい、以下の様なことから説明が始まりますが、
この辺りは、飛ばします。

<例>
“`sample_01.py
li = [1, 2, 3]
print(li)

# 結果
[1, 2, 3]
“`

せめて、ループぐらいは、使っておきましょう

“`sample_02.py
# sample_01.py

li = [1, 2, 3]

for x in li:
print(x)

# 結果
1
2
3
“`

index(添え字)とvalie(値)をセットで出

元記事を表示

Python初心者にこそ知ってほしい「仮想環境」の話

# はじめに

先日[自動化勉強会&交流サーバー](https://discord.gg/KbHUFpuBV2)にてPython勉強会が実施されました。

この記事では少し発展的な内容として、Pythonをはじめたての方にこそ知ってほしい、仮想環境について解説します。仮想環境は、Poke-Controllerのような依存関係の多いアプリケーションを動かす時に必須の知識です。

おもにWindowsについて解説していますが、macOSやLinuxの場合は`pyenv`を使えば大体同じことがいえます。

# Pythonの正体と「環境」

## python.exeの場所

PythonはPokeConのマクロ作成に使うほか、PokeCon自体を作っているプログラミング言語です。しかし、プログラミング言語だからといって何かすごく特殊なものなのではなく、本体は普通のアプリケーションです。

たとえば私のPCでは、`C:\Users\mukai\AppData\Local\Programs\Python\Python37\python.exe`にPythonの本体である`python.exe`

元記事を表示

PythonスクリプトをWindows環境で動作するEXEにする方法

# 初めに
GxPの島田(@tshimada-gxp)です。
本記事はグロースエクスパートナーズアドベントカレンダー2022の10日目の記事です。
この記事は、PythonスクリプトをWindows環境で動くEXEとしてコンパイルすることで簡単なツール的なものを作れることを紹介したいと思います。
# なぜおすすめしたか?
今回の内容は、Pythonの単なる導入案内になりますが、プログラム初心者の方でも、とてもとっつきやすいプログラミングだと思っています。
もちろん、端末(CLI)を使うので面倒って思う方もいるかもですが、プログラミングを気軽に始めたいならこれが良いと思うのでおすすめです。
または、LinuxだったらできるのにWindowsでは・・・と思っているのスクリプト使い(私のことです)とか、解析にエクセル使うことが多いけど、エクセルが無い環境もあって不便を感じているなんて人にもおすすめかなって思います。
すごく環境構築が簡単だし、簡単なコーディングなら難しくないので、まだ触ったことが無ければぜひ。
# やること
私が最初に作ったソフトウェア「ファイル比較EXE」を作ります。
##

元記事を表示

スライドバーを動かすタイプのImage Comparison

## はじめに
↓のようにスライドバーを動かして画像を比較したい。
![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/e77dd516-45d3-4a6c-2a64-d276cb9b19e0.gif)

[Knightlab の JuxtaposeJS](https://juxtapose.knightlab.com/)を使用して、Streamlit アプリのスライダーで画像を比較するためのシンプルな Streamlit コンポーネントを作成します。

以下のサイトを参考にしました。ありがとうございます。

https://github.com/fcakyon/streamlit-image-comparison

## 環境
+ windows10 home
+ python 3.10

## リポジトリのClone
ソースコードは以下になります。

https://github.com/youichi-io/image-comparison

“`
git clo

元記事を表示

ジェネレータとイテレーターについてまとめる(備忘録)

## そもそもジェネレータとは
>ジェネレータ …イテラブルなオブジェクトの一種で、文字列やリストなどと同様にfor文を使い値を1つずつ取り出すことができる。
⇒あらかじめ複数の値を格納するのではなく、値が要求されるたびに一個ずつ要素を生成する。
⇒多数の値を格納しておく必要がないので、メモリの消費量を抑えることができたり、無限の個の値を生成することができる利点を持つ。
ジェネレータ式ジェネレータ関数がある。

>イテラブルとは
⇒for文などで要素を1つずつ取り出して処理できるようなオブジェクトのこと
参考
[pythonプログラミングtips集/【python】イテラブルオブジェクトとは](https://science-log.com/python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0tips%E9%9B%86/%E3%80%90python%E3%80%91%E3%82%A4%E3%83%86%E3%8

元記事を表示

Django の外部キー on_deleteの引数 DO_NOTHING は、「何もしない」のか…!?

モデルに外部キーを設定するときに、
**on_delete=models.DO_NOTHING**
とした時の挙動について、発見があったので共有します。

### 外部キー on_delete のおさらい

モデルA がモデルBの外部キー持つ場合に、モデルBを削除しようとする時に、Aの振る舞いを決める

“`mermaid
graph LR
A[model A] — FK –> B[model B]
“`

指定する挙動は、大きく次の3タイプに分かれる

###
#### ①PROTECT

Aが存在する時、Bは削除できない

###
#### ②CASCADE

Aが存在する時、Bを削除可能で、Aも同時に消える

###
#### ③SET_NULL / SET_DEFAULT

Aが存在する時、Bを削除可能で、Bの外部キーの値に代わりにNull やデフォルト値を入れる

###
**`DO_NOTHING`** は、上記のように明示的に指定したくない場合に使えると思っていた。
強いて言えば、Aが存在していても、Bを削除出来る ③ に

元記事を表示

OpenCV VideoCaptureをめっちゃ速くする

# はじめに

OpenCVのVideoCaptureでは、カメラや動画ファイルから映像を取得することができます。しかし、これはそれなりに時間がかかる処理です。以下の簡単なコードで確認してみます。

“`python
from time import perf_counter

import cv2

if __name__ == “__main__”:
video_capture = cv2.VideoCapture(0)

try:
while True:
start_time = perf_counter()
_, mat = video_capture.read()
print(perf_counter() – start_time)

cv2.imshow(“window”, mat)
cv2.waitKey(1)

except KeyboardInterrupt:
pass

video

元記事を表示

pythonのenumerateのこと(備忘録)

## for文で、数字と要素を出力してみる

~~~python
list_sample = [“おはよう”, “こんにちわ”, “おやすみ”]

for i in range(len(list_sample)):
greeting = list_sample[i]
print(f”{i+1}: {greeting}”)

>>>
1: おはよう
2: こんにちわ
3: おやすみ
~~~

## enumerateを使ってみる
enumerateは遅延評価です。つまり、リスト型のような一度の呼び出しですべて呼び出されるわけではなく、値を要求されたら1個、再度要求されたらまた1個…と要素を評価する。

enumerateを使うと以下のようにコードが簡潔になる。
~~~python
list_sample = [“おはよう”, “こんにちわ”, “おやすみ”]

for i, greeting in enumerate(list_sample, 1):
print(f”{i}: {greeting}”)

>>>
1: おはよう
2: こんにちわ
3: おやすみ

元記事を表示

趣味で書いていっているPythonフロントエンドライブラリの1年の活動をまとめて振り返ってみる

プライベートの時間に趣味と勉強目的で書いていっているapyscというPythonのライトなフロントエンドライブラリの今年1年の活動を振り返りつつ記事にまとめてみます。
今年なにやったんだっけ・・・と個人的に振り返るためなので他の方には有益ではない面も多分に含みます。

# ライブラリの概要

先に軽くどんなライブラリなのかについて触れておきます。

GitHub:

https://github.com/simon-ritchie/apysc

今の所はSVGを中心としたフロントの記述がPythonのみで行える・・・というライブラリになります(D3.jsみたいな感じでグラフ関係などで色々自分で実装がいけるものを作ってみたいと思って作り始めています)。インターフェイスはPythonを参考にしたり古の時代に滅んだActionScript3という言語などを参考にしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/228778/d6b012a9-c7f2-1e8a-aece-b2ce7

元記事を表示

Python初学者が体感したPython 2系と3系の違い

## はじめに
本記事はProgaku Advent Calendar 2022 9日目担当です。
今まで個人開発でPython3系を触ってきましたが、
とってもレガシーなPython2系のシステムも触る機会ができてしまったので、
Python2系と3系の違いを備忘録としてまとめていきます。
(3系のコードの説明は省略しています。)

検証したpythonバージョンは以下です。
2系=2.7.18
3系=3.11.0

## 対象読者
python 3系の勉強して現場に入ったら、2系のシステムも触ることになった方(筆者を含む)

## Unicodeの文字列の扱い
Unicode(日本語などのマルチバイト文字)は、u’文字列’と記載しないと文字化けする。

## (3系)print関数→(2系)print文
python 2系ではprint関数はなく、print文として扱う。
また、複数のprintを実行して、結果を改行しない場合は、末尾にカンマを入れる。

“`python2:test.py
print u’2系です。’,
print u’2系です。’
“`
“`python2

元記事を表示

自動テストで品質を確保するために

## 自動テストと品質の確保と

自動テストをマメに書くようにしていますが、自動テストを全てpassしてもエラーが起こる時は起こりますよね
出典は忘れましたが、自動テストツールで行うテストは、テストではなくチェックリストの自動実行だと

この意見は一理あって、チェックリストに抜け漏れがあると、その分の品質は確保出来ない訳でして:sweat_drops:
ですが、有償でサービスを提供している側からすると気持ちよくそのサービスを使って欲しい訳でして、
どうすれば自動テストでより良い品質の確保が出きるのか考えてみました

## 自動テストでカバーできない点

これまで自動テストでは問題なかったけど、stagingやproduction環境に上げるとダメだったケースを考えてみると、
* 自動テストに抜け漏れがある
* 環境に依存する
この2つのケースが多かったように思われます

自動テストの抜け漏れがあるケースについては、何故抜け漏れが生じたかを考えてみると
* 時間がかかってテストサイクルに支障が出たのでコメントアウト等を行いそのままだった
* 自動テスト単体で完結しないため出来ない
* 純

元記事を表示

paizaラーニング「i番目の出力 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
K,L = map(int,input().split())
A = [[0] * 3 for _ in range(3)]
for i in range(3):
A[i] = list(map(int, input().split()))
print(A[K-1][L-1])
“`
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])

A = [[0] * 3 for _ in range(3)]
for i in range(3):
values = input().split()
for j in range(3):
A[i][j] = int(values[j])

print(A[K – 1][L – 1])
“`

元記事を表示

paizaラーニング「i番目の出力 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_i-thoutput_step1
#### 私の解答
“`Python3
K,L = map(int,input().split())
li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]
print(li[K-1][L-1])
“`
解答例とほぼ同じでした!!
#### 解答例
“`Python3
values = input().split()
K = int(values[0])
L = int(values[1])

li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]

print(li[K – 1][L – 1])
“`

元記事を表示

paizaラーニング「二次元配列の入力 4 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__2dmatrix_input_step4
#### 私の解答
“`Python3
N,M = map(int,input().split())
A = [[0] * M for _ in range(N)]
for i in range(N):
A[i] = list(map(int, input().split()))
for i in range(N):
print(*A[i])
“`
@WolfMoon先生の解答例を参考にしました。
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

A = [[0] * M for _ in range(N)]
for i in range(N):
values = input().split()
for j in range(M):
A[i][j] = int(va

元記事を表示

fortranを使わないマークリーダ開発の練習

“`haire.py

import numpy as np

#問題追加練習
#aa=1
#bb=2
#cc=3
#dd=4
#
#mon = []
#mon.append([aa,bb,cc,dd])
#print(mon)
#mon.append([aa,bb,cc,dd])
#print(mon)

results = []
student_1 = [[1,2,3,4],[1,2,3,4],[5,6,7,8],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_2 = [[1,2,3,4],[11,12,13,14],[15,16,17,18],[1,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_3 = [[1,2,3,4],[21,22,23,24],[25,26,27,28],[0,1,0,1],[‘a’,’b’,’c’,’d’],[‘a1′,’b2′,’c3′,’d4’]]
student_4 = [[1,2,3,4],[31,32,33,

元記事を表示

【Python】標準出力の出力先をファイルにする。

# はじめに
僕はiOSのPythonista3というAppで、よく寝っ転がりながらPythonするのですが、モジュールのヘルプを見ても英語がわからないのでGoogle翻訳が欠かせません。
一度、調べたこともすぐに忘れてしまうので、原文と翻訳テキストを保存しておくことにしました。

モジュールをインポートして`help(モジュール)`と入力し、コンソールに出力されるテキストを「すべて選択」し、エディタに張り付けるという作業なのですが、文字数が大きいと選択に時間がかかり、時にはAppが落ちてしまいます。

僕は寝っ転がりながら「コンソールに出力されるテキストを直接ファイルに書き込めたらいいのになぁ。」と普通に思いました。

# 結論から

~~~python:Python3
import sys

STDOUT = sys.stdout

sys.stdout = open(‘./tmp.txt’, ‘w’)

help(sys)

sys.stdout = STDOUT
~~~
pythonの標準出力の出力先は`sys.stdout`になっていて、これを書き換えることで出力先を変更で

元記事を表示

OTHERカテゴリの最新記事