Python3関連のことを調べてみた2021年03月16日

Python3関連のことを調べてみた2021年03月16日

「Python3」LINE BOT の入力待機を自己流に実装する。(PostgreSQL使用)

#はじめに
※はじめて記事を書いたので不足している情報があれば教えてください。
また、プログラムの知識も多く無いのでまずい書き方してたら教えてください。

#おことわり
この記事に掲載しているプログラムソースはコメントなどで
この記事URLを記載すればどのような用途で使ってもらっても構いません。
ただしこのプログラムを使って発生した、いかなるトラブルも責任を負いません。
自由に使える反面それに伴う責任はすべてあなたが負うと考えてください

# 環境
M1 macOS Big Sur
DB PostgreSQL(gigalixir)
Python 3.9.2
psycopg2==2.8.6

#前置き

ユーザーから値を受け取ってDBへ保存したいが、
そもそも入力待機させる方法が分からないのでググると”line bot セッション”という
ワードが出てきました。これをググるとサンプルコードが2つ(java もしくはPytohn)
ヒットしましたが、

_人人人人人人人人人人人人人人_
> 書いてある内容分かんない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

はい

元記事を表示

Pytorchのtensorが占有しているGPUのメモリを開放する方法

# 結論
GPUに移した変数をdelした後、torch.cuda.empty_cache()を叩くと良い。

# 検証1:delの後torch.cuda.empty_cache()を叩きGPUのメモリを確認

“`
Python 3.7.8 | packaged by conda-forge | (default, Jul 31 2020, 02:25:08)
[GCC 7.5.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import torch
>>> torch.__version__
‘1.6.0’
>>> import GPUtil
>>> GPUtil.showUtilization()
| ID | GPU | MEM |
——————
| 0 | 0% | 7% |
>>> a = torch.rand(1, 1000, 1000, 1000).to(“cuda”)
>>> GPUtil.showUtiliz

元記事を表示

[Python] リスト内包表記

# 概要
1: リスト内包表記とは
2: リスト内包表記の使い方①(基本型)
3: リスト内包表記の使い方②(基本形+if文)

最近、リスト内包表記の使用頻度が増えてきて、なぜ使用した方が良いかを実感できたため、備忘録として記載。

# 検証環境
OS:18.04.5 LTS
Python:3.6.9

## 1: リスト内包表記とは
* for文などの反復処理を比較的シンプルに書くことのできる記法である。
* for文を使用してループ処理するよりも、実行速度が早い
* 関数型言語の記法
※ Python言語は、オブジェクト指向PGと関数型PGの両面の特徴を持つ

## 2: リスト内包表記の使い方①(基本型)
#### 基本の型

“`python
[ 式 for 繰り返し変数 in シーケンス ]
“`

#### 例1: 文字列(string型)で格納されているリストを数値(int型)に変換する

“`python

# データ
point_list = [ ’80’, ‘100’, ’20’, ’30’, ’40’ ]

# 実行
point_list = [int(

元記事を表示

二重和の交換が苦手なあなたへ

# はじめに
数学を学んでいると, 二重和の交換を行う場面がよくあります.
例えば次のようなものです.

“`math
\sum_{n = 0}^{T}\sum_{k = 0}^{n}a_{n, k} = \sum_{k = 0}^{T}\sum_{n = k}^{T}a_{n, k}
“`

慣れてしまえばどうってことのない等式変形なのですが, 初見ではなかなか理解することができないものです.

本記事では二重和の交換, 特に和のインデックスが独立していない場合について解説を行います.
また等号が正しいことを確認するために, Pythonを用いて簡単な検算を行います.

高校数学レベルで理解できるので, お気軽にご覧いただければと思います.

また, 大学で学ぶ線形代数では二重和の計算を行うシーンが多々あります.
この春から大学生になる方々は是非本記事で二重和の交換に対する苦手意識を無くしていただきたいです!

# 和のインデックスが独立しているケース
上記のような二重和を考える前に, まずはもっとシンプルな以下のケースを考えます.

“`math
\sum_{n = 0}^{

元記事を表示

CUDA 10.1 + Windows 10でPyOpenCLを使った際の’CL/cl.h’が無い場合の解決方法

CUDA 10.1 + Windows 10 (64bit)環境下でPyOpenCLを使う際にはまった所の解決方法を書きます
import pyopenclして、
下記のように’CL/cl.h’が無いよと言われた場合、

“`Cannot open include file: ‘CL/cl.h’: No such file or directory error:“`

下のカリフォニア大学アーバイン校のサイトからプリコンパイルされた.whlをインストールすることで解決できます。

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl

例えば、64bit環境下でPython 3.7の場合、
pyopencl‑2021.1.3+cl12‑cp37‑cp37m‑win_amd64.whlをダウンロードして下さい。

参考URL:
https://forum.image.sc/t/error-while-installing-pyopencl-on-windows-10/44534

加藤 翼
株式会社インスパイアサーチ CEO / サ

元記事を表示

DjangoでダミーAPI作成

#背景
Djangoでテスト用のAPIを作成しました。
特徴としてはRequestとResponseをコンソールログで確認できます。
使い方としては外部APIを呼び出しするときに現場ではなかなか外部APIを本物使うことが
できないのでそういったときに使います。
#仕様
テスト用のAPIである。
Requestをコンソールログで確認できる。
Responseをコンソールログで確認できる。
言語はPython3
フレームワークはDjango, Django REST
Post通信である。
#主要なソース
“`py
models
from django.db import models

# Create your models here.
from django.db import models
from pygments.lexers import get_all_lexers
from pygments.styles import get_all_styles

LEXERS = [item for item in get_all_lexers() if item[1]]
LANGU

元記事を表示

appleとAppleは辞書順ではどちらが先か?

 この記事ではpython3.7, ruby2.6.6を使用しています。実行環境はそれぞれPyCharm2020.3とAWSです。

(注 2021年3月15日追記)
文字コードはPythonの標準の文字コードであるUTF-8とします。
ちなみに自分はこの記事を執筆して始めて文字コードを意識しました。

##1. はじめに
 プログラミングでは半角と全角、大文字と小文字は別の文字として認識されますよね。そしてこのことは既に知っていると思います。では質問です。appleとAppleは辞書順ではどちらが先にくるでしょうか?

##2. 答え
 答えは**Apple**が先です。Pythonを使って確かめてみましょう。

“`python:practice1.py
s1 = ‘apple’
s2 = ‘Apple’
if s1 > s2:
print(f'{s1}は{s2}より前’)

# -> appleはAppleより前
“`

##3. apple, Apple, APPLEではどうなるか?
 appleとAppleは辞書順ではどちらが先にくるかという疑問が解消したところ

元記事を表示

Pythonプラクティス: シーザー暗号

#背景
Pythonで練習して見る。FizzBuzzやれればいいという人もいるが何かないかと思って
提案します。
#仕様
##前提知識
シーザー暗号を使う。以下Wikipediaによる説明
シーザー暗号は単一換字式暗号の一種であり、平文の各文字を辞書順で3文字分シフトして(ずらして)暗号文とする暗号である。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた。
##内容
・ファイルから単語を取得してKeyに辞書型として設定する。Valueは一律 “None”
・辞書内の単語とシーザー暗号のペアがあるものを見つける。見つけた場合は書き出す。
アウトプットイメージ:IBM 1 HAL
##実装準備
実装する前に下記のコードは大いに流用して良いとする。

“`py

from __future__ import print_function, division

def rotate_letter(letter, n):
“””Rotates a letter by n places. Does not change o

元記事を表示

問題解決力を鍛える!アルゴリズムとデータ構造の第 4 章「設計技法(2) : 再帰と分割統治法」を Python で解いてみた

Python の勉強のため、[問題解決力を鍛える!アルゴリズムとデータ構造](https://www.amazon.co.jp/%E5%95%8F%E9%A1%8C%E8%A7%A3%E6%B1%BA%E5%8A%9B%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B-%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E5%A4%A7%E6%A7%BB-%E5%85%BC%E8%B3%87/dp/4065128447/ref=pd_lpo_14_img_0/355-1660948-1917632?_encoding=UTF8&pd_rd_i=4065128447&pd_rd_r=85fc5fc0-6650-41b2-beaa-2a75e0e94bf5&pd_rd_w=

元記事を表示

A Simple Explanation to Covariance and Correlation

One of the most common questions that arise while working with data is how the variables are dependent, varying with each other and how they are linked.

#### Definitions
1.) “Covariance is a measure of how much two random variables vary together. ”
2.) “Correlation is a statistic that measures the degree to which two variables move in relation to each other.”

Both covariance and correlations are about how the variable is relevant to each other. Covariance can have a range of minus infinity to

元記事を表示

【超超初心者向け】anacondaとVSCodeでPython勉強始める前の環境構築

# 概要

 **まずこの記事は、これからPythonの勉強を始めたい人向けの記事です。**

 VSCodeは既にインストールされている事を前提としています。

# anacondaをインストール

anacondaとはPython使用するにあたって必要なパッケージが色々含まれている仮想環境らしいです。

https://www.anaconda.com/products/individual

まずこちらからダウンロード。

パッケージがインストールされたら、画面に出てくる案内に沿ってインストール。

# インストールが終わったら

“`
python
“`

と打てば
 ![スクリーンショット 2021-03-15 0.15.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567748/92f91fc6-b2df-23d0-1c23-c83a59f21ce8.png)

こんな感じでpythonが使用できる事が確認できました。

warningに出ている通りpython3にするた

元記事を表示

カタラン数は素数羊の夢を見るか??

# 0. はじめに
本記事では組み合わせ論に頻出する重要な対象であるCatalan数の数論的な性質について簡単に解説します.
組み合わせ論的な解釈については他の方が書かれた良記事がたくさんありますので, そちらをご参考いただければと思います.
高度な数学はほとんど出てきませんので, 是非お気軽にご覧下さい.

# 1. Catalan数の定義
ではまず本記事のテーマであるCatalan数を定義しましょう.
以下の漸化式

“`math
\begin{align}
&C_{0} = 1, \\
&C_{n} = \sum_{k = 0}^{n – 1}C_{k}C_{n – 1 – k} \quad (n \geq 1)
\end{align}
“`

で定まる整数列 $C_{n}$ を Catalan数 といいます.

以前[三角関数に隠された組み合わせの秘密](https://qiita.com/NegeLon/items/8ab1d727605fe6d83c79)でご紹介したZig-Zag Number $Alt_{n}$ の漸化式によく似ていますね.[^1]

元記事を表示

Pytorch-LightningのCheckpointでLAN内のminio(S3互換ストレージ)へモデルを保存する方法

## 概要
現在のpytorch-lightning(ver.1.2.3)では、S3への保存を行う際にendpointを指定できないため、LAN内にあるS3互換ストレージなどへ保存を行うことが出来ない。
以下のsetup_endpointを実行することで、fsspecモジュールへ強引にモンキーパッチを当ててエンドポイントを指定する。

## 方法
– pytorch-lightning がクラウドストレージへのIOで使用している関数へモンキーパッチを当てEndpointを強引に指定する。
– 以下のコードをコピペしてsetup_endpointを実行するだけで可能。

## コード
“`python
from typing import Any
import gorilla
import fsspec

def apply_gorrila(function: Any, module: Any):
patch = gorilla.Patch(
module,
function.__name__,
function

元記事を表示

便利なset()の使いかた Python競プロメモ②

使用言語 Python3

ランダムに抽出された6つ数字が、これとは別に無作為に選ばれた6つの数字と、何個同じ数をい持っているか、という問題。

最初はforで無理やり当てはめれば解けると考えていたが、どう考えても効率が悪い
そこでset()というものをみつけた。

ここで具体的な例で考えてみる。

“`
#無作為に選ばれた数字6つ
a_1 = [1,2,3,4,5,6]
a_2 = [51,44,76,2,6,12]

ans = set(a_1)&set(a_2)
print(ans)
“`
この時の出力結果は以下のようになる。

“`
{2,6}
“`
なのでansをlenでとってあげることで、要素の個数を取得できる。

ただ、この時、ansの中身がない場合

“`
print(len(ans))
=>set()
“`
とかえってしまい、0が取得できない。
こういうときは

“`
if len(ans) == 0:
print(0)
else:
print(len(ans))
“`
こう記述することで、同じ要素の個数を取得することができた。

また、

元記事を表示

Python3: Zoom の token を取得

参考ページ
[ christophercollins/ZoomToken ](https://github.com/christophercollins/ZoomToken)

Arch Linux で必要なライブラリーをインストール

“`bash
sudo pacman -S python-pyjwt
“`

“`py:gen_tokey.py
#! /usr/bin/python
#
# gen_tokey.py
#
# Mar/14/2021
# ——————————————————————
import os
import jwt
import time
import json
from dotenv import load_dotenv
# ——————————————————————
def file_write_proc(file_name,str_out):
#
fp_out

元記事を表示

いくつ知ってる?_(アンダースコア)と__(ダンダー)の使い方【Python】

最近Pythonトリックを読み学びがあったのでメモまで。

# 概要
1. “`_“`と“`__“`の読み方知ってます?
2. Pythonで出てくる“`_“`と“`__“`の組み合わせ
3. 各組み合わせの意味合い
4. 感想

# 1. “`_“`と“`__“`の読み方知ってます?
Pythonトリックおすすめです。

– “`_“`:アンダースコア
– “`__“`:ダンダー

と読むらしいです。自分は知らずにアンダーアンダースコアと読んでました(恥ずかしい

# 2. Pythonで出てくる“`_“`と“`__“`の組み合わせ

Pythonで“`_“`と“`__“`の組み合わせで主に使われているのは以下の5つ。

– 変数の先頭の“`_“`
– 変数の末尾の“`_“`
– 変数の先頭の“`__“`
– 変数の先頭と末尾の“`__“`
– 単一の“`_“`

# 3. 各組み合わせの意味合い
組み合わせの意味合いは下記の通り。
## 変数の先頭の“`_“`
これはよく見ます。変数がプライベートであること

元記事を表示

メモ化について

#この記事を書く動機
フィボナッチ数列の高速化で何がありますかと言われて答えられなかったから
調べたものを共有してほしいと思い書きました。

#メモ化とは
>メモ化(英: Memoization)とは、プログラムの高速化のための最適化技法の一種であり、サブルーチン呼び出しの結果を後で再利用するために保持し、そのサブルーチン(関数)の呼び出し毎の再計算を防ぐ手法である。メモ化は構文解析などでも使われる(必ずしも高速化のためだけとは限らない)。キャッシュはより広範な用語であり、メモ化はキャッシュの限定的な形態を指す用語である。(Wikipedia)

###フィボナッチ数列の原文
“`python
def fib(n):
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1)+fib(n-2)

“`
nが大きくなるほど再起関数呼び出しが深くなり計算時間増加
でもよく考えると

___f(4)___=___f(3)___+___f(2)___
___

元記事を表示

Think python 2e chp 10から

#前提

http://facweb.cs.depaul.edu/sjost/it211/documents/think-python-2nd.pdf
10章から
内容:
用語
Exercise
#chap 10
##用語
list:
A sequence of values.
element:
One of the values in a list (or other sequence), also called items.
nested list:
A list that is an element of another list.
accumulator:
A variable used in a loop to add up or accumulate a result.
augmented assignment:
A statement that updates the value of a variable using an operator like +=.
reduce:
A processing pattern that traverses a sequence a

元記事を表示

print関数を用いずにHello Worldを表示する

##1. はじめに
 pythonの勉強を始めて最初に書いたコードは何でしたか?恐らく多くの人は次のようなコードだと思います。

“`python:helloworld.py
print(‘Hello World’)
“`

 引用符がシングルクォーテーション(‘)かダブルクオーテーション(“)か、あるいは引用符内の文字が大文字か小文字かの違いはあったと思いますが、print関数を用いて文字を表示させたと思います。ちなみに自分はpythonをインストールした初日にこのコードを実行して**「やったー。これで自分もパイソニナンになれたぞ!」**って感動しました。
 pythonを勉強していてとふと次のような疑問を抱きました。**「print関数以外で文字を表示する方法はないのかな?」**その方法があればprint(‘Hello World’)に対抗できるぞ!と思い記事にしました。

##2. 条件
この記事を執筆するにあたり条件は次のとおりとしました。
・Hello Worldを表示する
・print関数は用いない
・pythonだけを用いる
・コードの実行は1回だけとする

##3.

元記事を表示

#3 Slack/ChatbotのGoogle Map対応 |リーガテックの神を目指す駆け出しITコンサルがインフラエンジニアに転身するまで

### 前回まで&今回のテーマ

https://qiita.com/nyaku/items/b6e4e8122b5ecf335da0

……では、次はherokuを理解うんぬんと言いましたが、同期さまのリクエストで、Google Mapへのリンク機能を追加することになりました!

### 今までは?
いままでの当botでは、ユーザーからの入力(ランチの種類)にたいし、予め用意された**会社付近のランチ一覧表**から、ユーザーが好みそうなジャンルの店をランダムで一つ表示する、というものでした!
![スクリーンショット 2021-03-11 16.47.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319381/79705d85-2b2b-058d-7926-6c7ca4f3e963.png)

しかし、表示されるのは食べログのページだけで、そこに行く、というアクションまでにワンステップ必要だったのです。マーケ論で一番良くないっていわれるやつですね……
今回はこれを、Google Mapへのリンクを

元記事を表示

OTHERカテゴリの最新記事