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

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

型を意識したPythonの変数命名

Pythonは動的型付言語ですから、変数宣言時に型をつける必要がありません。

これは初心者にとっては、わかりやすいという大きなメリットです。
しかし、だんだんプログラムが肥大化していくにしたがって、「あれ?これってリストなのだろうか。タプルだろうか?」とわからなくなってくることがあります。

~~チーム開発などしている場合は、チームのコーディング規則にのっとるべきですが、個人でちょっとした開発をする場合や、コンペのためにコードを書く場合だと、わざわざ静的解析のツール(MyPy)なんかを導入するのも面倒です。~~
~~今回はそんなときの変数命名で、インターン先の社員さんに聞いたちょっとしたコツをメモ。~~

~~よしあしがあるかもしれませんが、例えば、画像のリストが下にある場合、~~

“`
images = [img1,img2,img3,…]
“`

~~としてもいいのですが、~~

“`
images_list = [img1,img2,img3,…]
“`

~~とすると、tupleや辞書でもなくlistだよ!というのが伝わります。
`images_ndarra

元記事を表示

python 3.8.2でprologを動かしてみた

「pyswip便利なんだけどpython 3に対応してないからな~泣」という声をネットのどこかで見かけたので、

「**python3.8.2でもpyswipちゃんと動いたよ**」という報告をしようと思い、この記事を書いた。

蛇足だが、予言者でもない限り、「python3でも動く」とは確かに言えない。python3.8.2で動いても、python3.8.3以降で動く論理的な保証はどこにもないからだ。

1. `pip install pyswip`
2. 次のコードを実行

“`python
from pyswip import Prolog
p = Prolog()
p.assertz(“father(michael, john)”)
p.assertz(“father(michael, gina)”)
for s in p.query(“father(X,Y)”):
print(s[“X”], “is the father of”, s[“Y”])
“`

3. 次のように標準出力を得る

“`
micheal is th

元記事を表示

Windows EventLogをjson形式に変換する

# Overview
[Windows EventLogをElasticSearchにimportする](https://qiita.com/sumeshi/items/491891d83c3aca224880)
[Windows EventLogをElasticSearchにimportする(のを100倍早くする)](https://qiita.com/sumeshi/items/cb2fbafe59c2c83e3085)

の続きです.

昨年evtx形式のファイルをElasticsearchにインデックスするライブラリをつくったんですが,
poetryにリプレースした(機能追加もした)ついでにPyPIにアップロードしたのでその記録です.

# Usage
https://github.com/sumeshi/evtx2es

“`bash
$ evtx2json /path/to/your/file.evtx /path/to/output/target.json
“`

“`python
from typing import List
from evtx2es impor

元記事を表示

(自分用)VS CodeにFlask入れる

# **VS CodeにFlaskを入れさせてや泣(macOS)**
Flaskとは何かとかそういうまじで分からんが?笑
# **1.まず流れだけ**
1. venvで仮想環境作る
2. Flaskをpip installで入れる
3. 動作確認して終了

# **2.具体的な話**
## **2-1.仮想環境を作成**
– いい感じのフォルダを作っておく

– `python3 -m venv <仮想環境の名前>`を作ったフォルダのターミナルに入れる
(もし怒られるならpy,python,python3を総当たりで変更してみる)

– 多分左下の方にpython~~ってあるからそこを選択、
“Python <バージョン名> <さっき作った仮想環境名>“みたいのが有るはずなので、クリック。
これでPython仮想環境を使うよって宣言した様なもん

– もし仮想環境でターミナル使いたい場合は、上のツールバーに有る
“表示”→”コマンドパレット”→”`Python: Create Terminal`を入力”
で開く

## **2-2.Flask

元記事を表示

PoetryでもPython3.8を使いたい!

# はじめに

そろそろ`Python3.8`がリリースされて、半年以上が経ちます。
(最初のリリース日は2019年10月14日([参考](https://www.python.org/downloads/)))
なのに!
`Python3.8`が使えてない!

[面白そうな新機能](https://qiita.com/ksato9700/items/3846e8db573a07c71c33)がたくさんあるのに!!

と言うことで、MacOSに`Python3.8`を入れていこうと思います。

ただ、巷にあふれている`pyenv`を利用する方法ではなく、
`homebrew`で入れられる`Python@3.8`を利用する方法です。
(`pyenv`アレルギーなので)

# 手順

## 1. `homebrew`にて`python@3.8`をインストール

`homebrew`を入れてない場合は、`homebrew`のインストールから行いましょう
`Python@3.8`のドキュメントは[ここ](https://formulae.brew.sh/formula/python@3.8)

元記事を表示

ゼロから始めるLeetCode Day53 「1365. How Many Numbers Are Smaller Than the Current Number」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

python 入門

#python入門

自粛期間もあり、自分のスキルの棚卸しなど含めて、業務に使っているスキルを復習ということで基礎から学習していこうと思います。

## 環境構築

環境構築はvenvで環境構築をつくり、仮想環境で開発環境を整えます。

作業ディレクトリを作成

“`
mkdir [作業ディレクトリ]
“`

作業ディレクトリ内で仮想環境を作ります。

“`
cd [作業ディレクトリ]
“`

仮想環境を作成

“`
python3 -m venv [任意の名前]
“`

### active

仮想環境に入る

“`
source [任意の名前]/bin/activate
“`

仮想環境に入ることが出来たと思うのでPythonのVersionを確認します。
正常に動作していればVersionが表示されます。

“`
python -V
Python 3.7.3
“`

開発環境が出来たので次回からはPythonの文法について学習していこうと思います。

元記事を表示

「14日で作る量子コンピュータ」を読んでみる。5日目 量子井戸の改良・障壁の追加

# はじめに
 今回は量子井戸の改良を行います。具体的には量子井戸の中心にポテンシャルの障壁を追加することでより量子ビットとしての役割を果たすようにしていきます。

# 5 量子井戸の改良

## 5.1 障壁の追加
 量子井戸をビットとして扱うためにここでは量子井戸の改良を行う。具体的には量子井戸の中心にポテンシャルの壁を作る。このポテンシャルの高さを$V_b[eV]$、幅を$W$とするとポテンシャルは以下のように表される。

“`math
V(x)=\left\{\begin{array}{ll}
V_b & (|x|\leq \frac{W}{2})\\
0 & (\frac{W}{2} < |x| \leq \frac{L}{2})\\ +\infty & (|x| > \frac{L}{2})
\end{array}
\right.
\quad (5.1)
“`

## 5.2 障壁あり量子井戸のプロット
 基底状態と第一励起状態の障壁のサイズ$V_b$を3[eV]少しずつ大きくして行った時の様子をプロットしてみる。

### 5.2.1 基底状態の時
![ep_Star

元記事を表示

Pillowを使用して画像を透過して一部だけ重ねる

# はじめに

業務で画像を一部だけ重ねる必要があり、方法を調べたのでメモとして残しておきます。

最初はopencvを使用して、重ねる予定でしたが、調べているうちにPillowを使用したほうが楽そうだったのでそちらを使用する方法に切り替えました。

使用する画像は以下
test1.png test2.png

# 画像を透過する

まずは、画像を透過する。
これは検索すれば結構出てくるのですぐにできると思います。

実装は以下。

“`

元記事を表示

Pythonで自然言語処理100本ノック 2020を解いたついでに死ぬほど詳しく解説を書いていく[第1章 準備運動]

出てきた関数一つ一つ死ぬほど詳しく書いていきます。またどういった発想からそのようなコードになったのかも書きます:fist:
## 1章 準備運動
### 00 文字列の逆順
“`
str = “stressed”
reverse_str = str[::-1]
print(reverse_str)
“`
解説
この問題で使うのは、「スライス」の知識
スライスとは…シーケンス(文字列、リスト、タプルetc)の一部を切り取ってコピーを返してくれる仕組みのこと。

“`
str[n] #strのn文字目を取り出す
str[start:stop:step]

#start…何番目の文字から?
#stop…終点(+1の値を指定しよう!)
#step…何個飛ばし?
“`
### 01 「パタトクカシーー」
“`
str = “パタトクカシーー”
print(str[1::2])
“`
解説:
00で得たスライスの知識を用いれば良い。
str[1文字目から:(無記入なので最後まで):2飛ばし]
スライスにおいて値を入力しない時は最後までだと解釈される。
### 02 「

元記事を表示

Python初心者がバブルソートを整理する

###これは備忘録です 
~~忘れることないと思うけど~~

(追記 2020/0611:13:00)
@shiracamusさんからアドバイスを受けましたので修正します。

#バブルソートって
バブルソートとは、基本交換法とも呼ばれるソートアルゴリズムで、**大体適当に作ろうとするとこれになる**

![bable.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650016/dc33e62a-8a47-bcc7-1a27-7e9cbcafa335.png)

#中身の解説

“`bubble.py
”’1”’def bubble(T):
”’2”’ i = len(T)-1
”’3”’ while i:
”’4”’ for j in range(i-1):
”’5”’ if T[j] > T[i]:
”’6”’ T[j],T[i] = T[i],T[j]
”’7”’ i -= 1

元記事を表示

入力補完を充実させ、より堅牢なPythonコードのための型アノテーションとPyright入門

よりVS CodeのPythonの入力補完を精度良くしたり、入力補完が効かない部分をちゃんと補完してもらったり、もしくは静的型付き言語でコンパイルして型のエラーが無いか調べるがごとく、CIなどでチェックして安全にプロジェクトを扱うためのPythonの型アノテーションやPyrightなどについて学んでいきます。

# 記事執筆する際に使っている環境

– Python 3.7.3(Anaconda。本記事の内容は古いPythonバージョンでは使えないものが含まれます)
– Windows10
– VS Code 1.45.1
– Kite
– VS Code上の以下の拡張機能
– Python
– Kite Autocomplete for Python and JavaScript
– Pyright

※Kiteの有無などで若干補完結果が皆さんの環境と本記事でずれたりするかもしれませんがご了承ください。

# そもそも型アノテーションって何?

Pythonにおける関数や変数などに対する型の明示的な指定です。型ヒントなどとも呼ばれます。

# 型アノテーション

元記事を表示

Cloud Pak for DataのJob (Notebook) でログファイルを出力する

Cloud Pak for Data (以下CP4D) の分析プロジェクトで、Notebookから作成したJobを実行した時のログを生成する方法です。

背景として、CP4D v3.0時点ではJob実行ログに任意のログメッセージを含めることができません。

詳細:Job実行ログ

分析プロジェクトのジョブを開き、実行結果であるタイムスタンプ部分をクリックすると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/28767d0a-eec4-09af-d3f9-b36b9c71ed14.png)

実行ログが表示されます。しかしこのログはJob (Notebook) を実行したときのPython環境に関するもののみ記録されており、ここに任意のログメッセージを書き込むことができません。(2020/6/11 CP4D v3.0LA時点)
![image.png](https://qiita-image-store.s3

元記事を表示

べき乗のmod

#大きい数同士のべき乗には、pow(a,b,z)を使う

#####自分用のメモです。一回みたことあったのに忘れてた&自分で実装できなくて時間とかした。これを使うと、a**b % z を秒でしてくれる。今度どういう仕組みで動いてるのか調べてみることにします。

再帰で書こうとしたら、再帰の上限回数(自分は3000)こえたらしくて上手く処理できなかった。なーんでだろう?

ちなみに、上限回数は、
import sys
print(sys.getrecursionlimit())

で調べられる。

元記事を表示

Python3 大学の授業の備忘録 (if文 if,else,elif)

大学の授業で初めてPython3を使っているので忘れたときに戻ってこれるように、書いてみようと思います。
本当に初心者のため正式な名称などがわからないため、わかり次第追記していくこと、できるだけ何も知らない人が読んでもわかりやすいように書きたいと思います。
何かアドバイスがあればよろしくお願いいたします。

今回の授業では「テストの点数から成績の評価を出力するプログラムを作成しなさい」というものでした。if文を使用して成績を判定しました。

“`python:practice.py
if (条件文):
条件に当てはまるときの結果
“`

if文こんな感じだと思います。実際に成績を表示したいときには

問題1 点数が50点以上なら合格と表示してください。

“`python:qiita.py
if score >= 50: #成績(score)が50点以上という条件
print(“合格”) #合格と表示
#結果: 合格
“`

このように書いていきます
私が初めてコードを書いてエラーが多かったところは、条件文の : (コロン)が抜けていることがあ

元記事を表示

ゼロから始めるLeetCode Day52 「1351. Count Negative Numbers in a Sorted Matrix」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

【Python】AWS S3バケットにCSVファイルをアップロードしたり、データを読み込んだりする

#やりたいこと
タイトルのことをしたい。(と思い、できたので、備忘録としてまとめました)
背景として、AWS Lambda関数(WebAPI)からイベントをトリガーして、1日1回ファイルを更新する処理を作りたいと思いました。

try and error の経緯は、以下の感じです。

1. WebAPIの内部ファイルに書き込もうとする
2. `/tmp/`フォルダ内のファイルに書き込もうとする
3. S3バケットにファイルを保存してそれを参照する ←***今ここ***

1.では、そもそもWebAPIの内部ファイルはread onlyとなっており、書き込みできませんでした。
2.では、`/tmp/`フォルダがAWSにキャッシュとして存在しており、時間で(インスタンス消去時に?)消えてしまうため、後からファイルにアクセスできませんでした。

※ WebAPIのイベントの設定方法もまとめておりますので、ご参考ください。
[zappa経由でデプロイしたAWSLambda関数(WebAPI)にCloudWatch Eventsを設定する](https://qiita.com/nemutas/i

元記事を表示

全国統一プログラミング王決定戦予選 D – Restore the Tree

いつもは精進中になんか気づいたことがあったらTwitterでまとめちゃうんですが、この問題は結構長くなりそうなので記事にまとめることとして、書き始めたんですが、問題の制約を見落としてることにあとから気づいて、無駄記事になりました。

でもせっかく書いたので…

解説ACでした。

# 第一関門
**グラフ中に閉路や、根の方向に戻る辺は存在しません(これにすら気づかなくて解けなかった)**
これ関連の考察が個人的には最重要ポイントだったかなと思っています。

まぁ、後から読み返したら、問題文中に
###書き足された各辺u→vは、ある頂点uからその子孫であるような頂点vに向かって伸びています。
って書いてあったんですけど。

閉路が存在しないのは言われてみれば簡単な話で、例えば、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244678/bfbb25c1-81d9-dff1-bd41-e5a673ab3e2c.png)
こんな感じに閉路が存在したとすると、閉路を構成するどの矢印をなくしても

元記事を表示

PythonでPHPのshell_exec風にLinuxコマンド実行する簡易版

サーバーのテスト環境作成時に、PythonでLinuxコマンドを実行したかった際のメモ。

まず、基本形は以下のとおりです。
コマンドは1行の文字列で実行できません。
コマンドと引数はリストにして渡してあげる必要があります。

> [重要]
> @shiracamus さんからレビューいただきました!
> リストで渡さなくても実行できるっぽい。

“`python
import subprocess

# 間違い
# subprocess.call( ‘cp -a test.txt text2.text’ )

# リストに分割して実行が正しい
subprocess.call( [‘cp’, ‘-a’, ‘test.txt’, ‘text2.text’] )

#
“`

ただ、リストで渡すのめんどい。。。
Linux上で簡易実行テストしたコマンドをいちいちリストにしてられないし、メンテナンス性も悪い。移植バグも起こりやすいし。
PHP なら shell_exec() 関数で文字列から簡単にLinuxコマンドを実行できるのに。。。
しょうがないのでPHP風の簡易ラッパー関数を作り

元記事を表示

Python 3: NLTKを用いた自然言語処理

このチュートリアルでは、TF-IDFを用いて**NER(Named Entity Recognition)**を構築することで、**Python**での自然言語処理**(NLP)**の基礎を学びます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/natural-language-processing-in-python-3-using-nltk_595031)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
このチュートリアルはPythonバージョン3.6.5とNLTKバージョン3.3に基づいています。これらはAnacondaバージョン1.8.7に予めインストールされていますが、それが前提条件ではありません。

NLTKパッケージはパッケージマネージャを使って[インストール](https://www.nltk.org/install.html?
spm=a2c65.11461447.0.0.471a101afZjz48)する

元記事を表示

OTHERカテゴリの最新記事