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

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

【Python】forループとlambda式関数を組み合わせるときのTips

# 概要

今回はPythonのtkinterでボタンにlambda式関数をバインドするときに躓いたので、備忘録として共有します

# 修正前コード

“`Python
buttons = [tkinter.Button(root, text=”テスト”, command=lambda: self.test_function(True, i)) for i in range(5)]
“`

こんな感じでtkinterのボタンコンポーネントをfor文で5つ作る際、そのボタンのインデックス(0~4)を押したときに発火する関数の引数に入れたいというケースがありました

# 起こった事象

このコードを組み込んだプログラムを実行してそのボタンを押してみると、**すべてのボタンでindexの引数に4、つまり、ループの最後の値が反映されていました**

原因は、**変数名はforループの各繰り返しで再代入される**という仕様でした

# 解決策

lambda式内でデフォルトのキーワードパラメータを使用することで解決できます

“`Python
buttons = [tkinter.Butt

元記事を表示

PythonでMQTT(Paho) – 2023

![Pahoクライアントを使ってPythonでMQTTを使用する方法](https://assets.emqx.com/images/e23634edd7402b941b6df32dc9bc77a7.png?imageMogr2/thumbnail/1520×684)

## はじめに

[MQTT](https://www.emqx.com/en/blog/the-easiest-guide-to-getting-started-with-mqtt)は、[パブリッシュ/サブスクライブモデル](https://www.emqx.com/en/blog/mqtt-5-introduction-to-publish-subscribe-model)に基づくIoT向けの軽量メッセージングプロトコルで、最小限のコードと帯域幅で信頼性の高いリアルタイム通信を提供します。リソースや帯域幅が限られたデバイスに特に有利であり、IoT、モバイルインターネット、IoV、電力産業などで広く採用されています。

Pythonはその汎用性、使いやすさ、豊富なライブラリによりIoT分野で広く使用されています。大量

元記事を表示

タイ語処理OSSに4発プルリクを出した初コントリビューション体験記②; 文章正規化

:::note
前回はこちら:
[タイ語処理OSSに4発プルリクを出した初コントリビューション体験記①; 形態素解析](https://qiita.com/konbraphat51/items/bb5ee37f7274907817a9)
:::

## はじめに
タイ語が読めるので、インターン先で社内唯一のタイ語NLPデータサイエンサーとして登用されている者です。

プログラミングは9年以上やっているのですが、初めてOSSにコントリビューションできて嬉しくなったので、その手順と、そのOSSの管理手法について記録を残します。

## `pythainlp`とは?

タイ語の自然言語処理を行うにあたって恐らく全人類が使うであろう大御所ライブラリ [pythainlp](https://github.com/PyThaiNLP/pythainlp) があります。

これには、
* 形態素解析
* 文章正規化
* ローマ字化
* スペルチェック
* コーパス提供
* …

など、タイ語の処理に関する森羅万象の機能が搭載されています。

管理は、[backさん](https://githu

元記事を表示

Paizaでよく使った記法(Python)

# map
この記法では`2 3`のような入力(個数が決まっていて間にスペースがあるような入力)の時によく使いました。

例として、上記のような`2 3`といった入力があったとします。
mapを使わないで書いてみましょう。
~~~python
input_line = input() #string形式で”2 3″といった形式で格納される。
n = int(input_line[0]) #”2″を格納
m = int(input_line[2]) #”3″を格納 ※”2 3″では間にスペースが入っている

print(n,m) #「2 3」と出力される。
~~~
なんだかinput_lineが無駄に見えますね。

mapを使ってみます。
~~~python
n,m = map(int, input().split())

print(n,m) #「2 3」と出力される。
~~~
シンプルです。(以下解説)

mapの書き方はこのような形↓
~~~python
map(型,入力(カンマ区切り文字列

元記事を表示

【Python】フーコーの振り子の寿命の質量依存性を調べる

# 概要
 フーコーの振り子の寿命の質量依存性を調べた。そのために並列処理を実装した。結果は質量が20kg以上の時、質量依存性がほとんどなくなった。

# 動作環境
– Windows10(64bit)
– Python 3.7.7

# やりたいこと
 フーコーの振り子の寿命の質量依存性を調べたい。そのためにフーコーの振り子の振幅が10000回連続して0.1m以下になったときの時刻を調べる。
また、並列処理を実装した。

# アルゴリズム
1. ルンゲクッタ法である時刻の振り子の位置を求める。
2. 振り子の振幅を計算する。
3. 振り子の振幅が0.1m以下だったらcountを1増やす。振り子の振幅が0.1m以上だったらcountを初期化する。
4. countが10000に達したときの時刻を取得する

以上のアルゴリズムを並列処理する。

# プログラム
“`Python
import numpy as np
from mpmath import pi
from mpmath import exp
from mpmath import sin
from mpmath impor

元記事を表示

Python備忘(テスト投稿)

# Python備忘
自分用です(テスト投稿)

### 基本
“`
import ——

def main():
while True:
#メインの処理

if __name__ == ‘__main__’:
main()
“`
### 手動ガベージコレクション
“`
import gc

del 変数名
gc.collect()
“`

### 一定回数を繰り返す
“`
for i in range(2):
#range()の引数に繰り返したい回数を指定
“`
### 配列を要素の回数繰り返す
“`
for 変数 in 配列:
#変数を一つずつみてゆく
“`

### エラーが出る処理について、確実に情報を取得するまで繰り返す
“`
import time
import pyautogui as pag

while True:
try:
#実行したい処理
img_d=pag.screenshot() #実行したい処理 この場合はキャプチャ
#

元記事を表示

ローカル LLM を用いた Instruction データセット の Data Augmentation と Evol-Instruct

# はじめに
どうもこんにちは、kunishou です。本記事は LLM Advent Calendar 2023 5日目の記事になります。LLM アドカレも毎日面白い記事の連続で、自分も他の記事に見劣りしないような有益な記事を書かねばと刺激を受けながら執筆しました。

https://qiita.com/advent-calendar/2023/llm

# 本記事について
本記事はローカル LLM を用いて
– Instruction データセットを Data Augmentation することができるか
– Evol-Instruct することができるか

の2つのテーマについて検証した記事になります。

# モチベーション
## Instruction データセットの自動生成の課題
LLM の性能は Instruction データセットによるファインチューニングの影響が大きいことは [LLM Advent Calendar 2023 1日目の記事](https://qiita.com/kunishou/items/efd9f68d6aa86d56dc73)でも述べましたが、世の

元記事を表示

経県値マップをmatplotlibで実装してみる

最近日本の色んなところに行って経験したので、自分の行ってきた場所について纏めたいと思って、そしたら『経県値マップ』というサイトを見つけました。これを気に入ったので自分でもpythonで同じようなことを作ってみました。簡単なmatplotlibで描いたものです。

この記事ではその書いたpythonのコードについて説明します。

# できたもの
まず結果から始めたいです。

以下のコードで作った経県値マップはこういうものです。

![keikenchi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/202903/2515a6c5-318f-a1a7-2119-40869c123e8d.png)

行ったことがある都道府県に点数をつけるものです。
点数の意味は
* 0: まだ全然行ったことも通り過ぎたこともない
* 1: 電車などで通ったことがあるが、足で踏んだことない
* 2: 乗り換えで行ってきたことがあるが、特に何もしていない
* 3: 用事や旅行などで行ったことがある
* 4: ホテルなどで泊まっ

元記事を表示

LangChain のソースコードを SOLID 原則などを思い浮かべながら眺める

ここでは **SOLID原則** と **契約プログラミング** について、 LangChain の実装の中にその要素を見出しながら、説明を試みる。

# SOLID原則

[**SOLID原則**](https://ja.wikipedia.org/wiki/SOLID) はオブジェクト志向プログラミング(OOP)における設計のガイドラインの一つ。以前に話したように、これは高凝集で疎結合なモジュール、今回の場合はクラスや関数の設計に関する具体的なアプローチ。

具体的には、SOLID原則には5つの要素が含まれている

* S – Single Responsibility Principle (単一責任の原則): 変更するための理由が、一つのクラスに対して一つ以上あってはならない
* O – Open/Closed Principle (開放/閉鎖の原則): ソフトウェアの実体(クラス、モジュール、関数など)は、拡張に対して開かれているべきであり、修正に対して閉じていなければならない
* L – Liskov Substitution Principle (リスコフの置換原則):

元記事を表示

Python使いの皆さん、Rの自由すぎて怖いクラス作成方法をご覧ください

# はじめに

こんにちは、本日の[ディップ株式会社 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/dip-dev)の記事です。

普段はデータサイエンティストの仕事をしていまして、主にRとSQLなどを利用しています。

今回の記事では、エンジニア向けに、Rの中で複数存在しているオブジェクト指向プログラミング(OOP)システムの中で、一番幅広く利用されて、歴史が古く、かつ単純なS3について実践的に説明します。

データ分析の話は一切出てきませんのでご安心ください。

# 前提

詳細はこの記事を読んでいただきたいですが、

https://qiita.com/Gotoubun_taiwan/items/05b0d345a4af859d1d16

Rには複数のOOPシステムがあります。中でもS3、S4、R6が有名です。S7はまだテスト段階で、今後S3とS4の正式な後継システムになる予定です。

まず、S3は確かに自由すぎて怖いです。恐ろしいことはやり放題です。ただ、S3はかなり歴史があるため、変な挙動とか、S

元記事を表示

ChatGPTとPythonで学ぶ 強化学習

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ 強化学習」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

もちろん、よろしくお願いいたします。まずは、全く新しい方のために「強化学習」とは何かを説明しましょう。

強化学習は機械学習の一種で、エージェントが環境と相互作用することにより学んでいきます。エージェントは、行動を通じて獲得できる報酬を最大化するように学習します。この「報酬」は実際的なもの(例えばゲームでのスコア)や抽象的なもの(例えば、推薦システムにおけるユーザー体験の向上)が考えられます。

ここで大切なのは、強化学習が「試行錯誤」による学習アプローチであるということです。エージェントは最初は何も知らない状態からスタートしますが、行動の結果としての報酬から学び、最終的には最適な行動策略(または「ポリシー」と呼ばれます)を学習します。

なお、Pythonは強化学習の実装によく使用される言語です。様々な強化学習ライブラリがPytho

元記事を表示

競プロの初めの10問を解いてみた

# AtCoder Beginners Selection

初心者向けの問題が10問厳選されており、始めるにはもってこいの問題集。

https://atcoder.jp/contests/abs

いろんな方が、書いてますが自分も取り組んでみた感想を書きます。

以下自己解答。
他にも色々な解法があるのですが、自分が解けた(答えを見て理解できた)範囲で書きます。

# PracticeA – Welcome to AtCoder

“`python
# -*- coding: utf-8 -*-
# 整数の入力
a = int(input())
# スペース区切りの整数の入力
b, c = map(int, input().split())
# 文字列の入力
s = input()
# 出力
print(a+b+c,s)
“`

# ABC086A – Product

“`python

a,b= map(int,input().split())

if (a*b)%2:
print(‘Odd’)
else:
print(‘Even’)
“`

# ABC08

元記事を表示

[ChatGPT業務活用]定番から応用シナリオまで試せるアプリを作ってみた①

# Summary
## この投稿で扱う自作アプリ
– Live demo:https://tomohiku-gpt-web.azurewebsites.net/
– Source code:https://github.com/tomohikue/ExpertImitater
– License:MIT なので、使えそうであればご自由にご利用ください

## 目次

1章 アプリの紹介
2章 そのアプリで扱っている技術要素を説明

| 章 | 2章で扱う技術要素 | 備考 |
|:-:|:-|:-|
| 2-1 | OpenAIモデルの基礎知識| |
| 2-2 | チャット画面実装の技術的な考慮点 | |
| 2-3 | OpenAIモデルの定番シナリオの深堀り | **※追って投稿予定** |
| 2-4 | 組織内ノウハウをプロンプトに載せるアイディアと効果 | **※追って投稿予定** |
| 2-5 | [応用シナリオ] ベクトル検索の実装詳細 | **※追って投稿予定** |
| 2-6 | [応用シナリオ] Code interpre

元記事を表示

使いこなせていますか?Python 組み込み関数全71件 完全解説[2023 最新版]

この記事は[Nuco Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nuco)の5日目の記事です。

# はじめに

Pythonは、世界中で広く使われているプログラミング言語の一つです。Pythonの特徴の一つは、豊富な組み込み関数を持っていることです。

Pythonの組み込み関数は、2023年12月現在、全71件あります。しかし、それらを完璧に使いこなせている人はどれくらいいるでしょうか?

この記事では、Pythonの組み込み関数全71件を、実際のコード例も踏まえて完全解説します。この記事を読めば、Pythonの組み込み関数について、一から十まで理解できるでしょう。

それでは、早速見ていきましょう。

::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/

元記事を表示

Ansible で Python スクリプトを実行する

この記事は [Ansible Advent Calendar 2023](https://qiita.com/advent-calendar/2023/ansible) 5日目の記事です。

### はじめに

Ansible でターゲットのシステムに対して Python コマンドでスクリプトを実行する時、複数のバージョンの Python がインストールされていて、意図した通りに処理が実行されない場合があります。今回は Ansible が参照する Python とその Python でスクリプトを実行する方法を紹介します。

### Ansible が利用する Python のパスを取得する

Ansible が取得する Python のパスを 取得します。

“`yaml:リモートホストに対して実行する場合
– name: Gather facts from remote host
ansible.builtin.setup:
register: results

– name: Execute selenium on remote host
ansible.built

元記事を表示

New Relic APMをECSタスクで使う

株式会社ミクシィが運営するカラオケ動画コミュニティサービス[KARASTA(カラスタ)](https://karasta.net)の開発チームでリーダーをしている@cgetcです。

WEBサービスを運営していると定期的に実行したい処理が出てくると思います。
運営しているサービスでは、DjangoのカスタムコマンドをFargateのECSタスクで定期実行することで実現しています。
New Relic APMを利用し、アプリケーション監視をしたいのですが、ECSタスクで利用するためには工夫が必要だったので要点をまとめました。

# New Relic APMの非WEBの監視について
ECSタスクはWEBアプリケーションではないため、New Relic APMを使うにはWEB監視ではトラックされません。
公式のドキュメントによると、非WEBの監視にはPythonエージェントAPIを使う必要があり、マニュアルで設定する必要があります。
https://docs.newrelic.com/jp/docs/apm/agents/python-agent/python-agent-api/guid

元記事を表示

ChatGPTのみでゲームは作れるのか?

## はじめに
こんにちは!普段はレポートに追われるS高生(3期生)です。
今回はChat GPT3.5でゲームを作れるのか気になったのでまとめてみました。
ちなみに今回は3つほどゲームを作成してもらいました。
エラーが出た場合や実行されない場合のときはスキップすることがあります。
## ChatGPTが好む言語
ChatGPTに言語の指定もせずにプログラムを書いてって言うとPythonに侵されているChatGPTはPythonというとても遅いスクリプト言語を進めてきます。(まぁ私のメインで書いてる言語はPythonが多いけど…)
## ChatGPTに言語を書いてもらう方法
今までに何度か興味があってプログラムを書かせてみましたが、「〇〇を作って」と言っても、使用技術などしか教えてくれなくてコードを書いてくれませんでした。なので頼むときは「コードを出力してください」という文を追加すると、コードを出力してくれます。あと先ChatGPTが好む言語がPythonなので、なにも言語を指定せずにコードを出力してと、言うと、Pythonでコードが出力されるので注意を!!
##

元記事を表示

RaspberryPi Pico を使った土壌水分量監視装置

弊社では、全国に拠点がいくつかありますが、自分がねぐら(寝てない)とする拠点では、毎週当番制でLTを開催しています。LTのネタはなんでもよく、技術のことでもいいし、趣味のことでもいいです。当番はだいたい、1年に3〜4回ぐらいのスパンで回ってきます。

今回は、今年LTしたネタのうちの一つである「肴くん」について紹介します。(唯一の技術ネタでした)

## 肴(さかな)くんとは

いきなり、肴くんってなんじゃいって話ですが・・

今年の春に、プランターでトマトと枝豆を育て始めました。あとは適当に水をやって育てるつもりでしたが、これだけではつまらないと思ったので、なんかITっぽいことやるかと思い立ったのが、**土壌水分量監視装置**の構築です。

DXです。(適当)

トマトと枝豆が、私のビールのつまみになるため、この土壌水分監視装置のことを「肴くん」と名付けました。

**作るシステムに名前をつけると愛着がわきますね。(しらんけど)**

## 全体の構成

![sakanakun_1.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

値を持つ座標群からヒートマップを表示

## 背景

2次元の座標情報をヒートマップとして出力したいと思った.

![ヒートマップ概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3600683/e3bcb582-8b9a-1cfd-8032-9e8a77ea5d67.png)

最も簡単に出力すると点にのみ意味を持たせるだけで,間の値の情報を表現することはできない.
位置座標のような点の間が重要なデータの場合,間を補完して表示することで,見える情報があると思う.

そこで,scipyの線形補完を利用して,点間の値を補完したヒートマップを作成してみる.
プログラム言語は使い慣れているpythonを利用する.

## 方法:scipy.interpolateのgriddata

`scipy.interpolate.griddata`を用いることで,2次元座標上にある離散値を連続値になるように点間の値を補完する.

“`python:関数の引数
from scipy.interpolate import griddata

output =

元記事を表示

GitHub Copilotによって遂にPythonコードのドキュメントの完全自動生成を成し遂げた話

## Summary

– GitHub Copilot $\times$ Sphinx $\times$ GitHub Pages で遂にPythonプログラムのドキュメント完全自動生成を成し遂げた
– GitHub Copilot で `/doc` コマンドを実行してdocstringを生成してあげるだけで本格的なHTMLドキュメントが勝手に生成される
– これからはドキュメント作成に悩まされることはなくなった!

## これまで何に困っていたか

プログラムのドキュメント作成といえば,プログラミングに何かとついてまわってくる作業です.

![Figure1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154356/b5fc23b8-3085-637e-43f0-8df7158f6ac1.png)

他人が書いたコードを正確に読み取るというのはそこそこ研鑽が必要な技術なので,それを補うためにドキュメントが存在します.実際,今のプログラミングスタイルでは必要な機能を自分でゼロから実装することはほぼな

元記事を表示

OTHERカテゴリの最新記事