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

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

ゼロから始めるLeetCode Day10 「1431. Kids With the Greatest Number of Candies」

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

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

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

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

基本的にeasyのacceptanceが高い順から解いていこうかと思います。

前回
[ゼロから始めるLeetCode Day9「701. Insert into a Binary Search Tree」](https://qiita.com/KueharX/items/5cc45adb826cf66ca8ab)

10日も続きました、すごい。

# 問題
[1431. Kids With the Greatest Number o

元記事を表示

Pythonのmigrationツールのalembicを動かしてみた

# 目標

python の migration パッケージ[alembic · PyPI](https://pypi.org/project/alembic/)を動かしてみる

## alembic とは??

– [Welcome to Alembic’s documentation! — Alembic 1.4.2 documentation](https://alembic.sqlalchemy.org/en/latest/)

Python で SQLAlchemy を使用しているときに DB の管理をしてくれる migration ツール

## 環境準備

### Docker で環境を構築

手軽に構築したいので Docker で行う

“`bash:フォルダ構成
.
├── README.md
├── docker-compose.yml
└── src
└── model.py
“`

“`yaml:docker-compose.yml
version: “3”

services:
db:
image: postgres:11.7

元記事を表示

paiza スキルチェック過去問題集 「Cランク相当 検索履歴」について

(問題)
https://paiza.jp/works/mondai/skillcheck_archive/search_history?language_uid=python3

(Javaで解いた動画)
https://paiza.jp/works/skillcheck/primer/skillcheck4 

この問題の回答がなかったので、自分の復習もかねて回答コードを掲載します。
問題文は以下の通りです。

>あなたが利用しているブラウザでは検索ワードの履歴を見ることができません。あなたは検索ワードの履歴を見られないのは不便だと思ったので、検索ワードの履歴を見る機能を自分でつくることにしました。

>検索ワードの履歴とは次のようにつくられます。

>検索ワード W が以前に入力されたことがある場合:
履歴中の W を削除する。
履歴の先頭に W を追加する。
検索ワード W が以前に入力されたことがない場合:
履歴の先頭に W を追加する。

>検索ワード W が N 個与えられるので、N 個の検索ワードが与えられた後の履歴を表示するプログラムを書いてください。

問題文だけ

元記事を表示

【AtCoder解説】PythonでABC165のA, B, C, D問題を制する !

**AtCoder Beginners Contest 165**の**A,B,C,D問題**を**Python3**で解く方法を、なるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、D問題に残せる時間が増える

# ABC165

開催日: 2020-05-02(土) 21:10 ~ 2020-05-02(土) 22:50 (100分)
A問題提出人数: 11626人

(パフォーマンスと順位の目安は後で書きます)

(参考)私:パフォ1426 ABCD– 41:05 1379位 Dを先に解いてCに戻りました

A問題(11225人AC)
やや難しかったと思います。
B問題(9994人AC)
切り捨てを忘れないようにしましょう。サンプルで確認する癖をつけていれば

元記事を表示

AtCoder Beginner Contest 165 参戦記

# AtCoder Beginner Contest 165 参戦記

突然10分遅れになって驚いた. なんかラッキーでC問題、D問題が解けた感がある. まあ、解けた問題を逃してしまったと地団駄することも多いのでたまには良いでしょう.

## [ABC165A – We Love Golf](https://atcoder.jp/contests/abc165/tasks/abc165_a)

2分半で突破. O(1) で書けるんだろうなと思いつつも、ループを回すチキン.

“`python
K = int(input())
A, B = map(int, input().split())

for i in range(A, B + 1):
if i % K == 0:
print(‘OK’)
exit()
print(‘NG’)
“`

## [ABC165B – 1%](https://atcoder.jp/contests/abc165/tasks/abc165_b)

4分で突破. X≤1018 を見て、B問題

元記事を表示

[mypy] `–strict` で有効にならないオプションまとめ

今まで適当に `mypy –strict` を使ってきたが,本当にstrictなのか気になったので,何か有効になっていないオプションで大事なものがないか調べることにしました.

**以下は投稿日時現在で最新のバージョン 0.770 のものです**

## 結論

`–strict` で有効になっていない警告系のオプションは以下の6つ.

– `–disallow-any-unimported`
– `–disallow-any-expr`
– `–disallow-any-decorated`
– `–disallow-any-explicit`
– `–warn-unreachable`
– `–warn-incomplete-stub`

## それぞれのオプションが有効かどうか

まず,`mypy –help` で表示される警告系のオプションについて `–strict` で有効になるかどうかを以下にまとめました.

ただし,以下のようにデフォルトでオンになっているオプションは含めていません( `mypy –help` だとそれぞれを抑制するためのオプション

元記事を表示

【python】「”」や「’」を使ったタイム表示(str型)をdatetimeとtimedeltaで秒(float型)に変換する

# 概要
とあるものをスクレイピングしてて,経過タイム的なのの処理に困ったのでメモ.

こういうストップウォッチの表記知ってますか?
「x’yy”z」 は「x分yy.z秒」ということになります.この文字列(str型)からpythonを使って秒(float型)に変換したいというのが今回やりたいことです.
例えば
「1’45″5」 -> 105.5秒という変換です.

# 1. Datetimeのstrptimeを使って文字列をdatetime型に変換

プログラム中では,pythonの文字列型は`’hoge’`または`”hoge”` で記述されますが,今回のタイム表記「x’yy”z」は文字列中に「’」,「”」が含まれてしまいます.こういった場合は,pythonの文字列では`\`を使って対応し,`’x\’yy”z’`という表記になりま

元記事を表示

python3のmultiprocessingにおけるプロセス間通信の各種手法を計測してみた

python の multiprocess におけるプロセス間通信を実装していたら、
大量のデータをやり取りする場合にものすごい時間がかかりました。

なので、各手法について計測してみました。
pythonのバージョンは3.7です。

# 結果まとめ
結果を先にいうと以下です。

| |send time |recv time |データ制約|別途書き込み管理|備考|
|—————|—————-|—————-|—|—|—|
|Queue |0.00s |5.33s |pickle化できるもの|不要||
|Pipe |3.12s |5.33s |pickle化できるもの|不要||
|共有メモリ(Array)|3.02s |2.55s |1次元配列|必要|データに制約がある|
|Manager |10

元記事を表示

AtCoderのテストケース実行みたいにやりたかった。

#やりたかったこと
皆さんはAtCoderのコードテストやyukicoderのオンライン実行のような機能を利用しようとしたことはありますか?わたしはそれをPythonで実行できたらいいなぁ~と思ってました。

まあ要するに.txtのファイルをPythonのinput()で読み込めたらいいなぁ~ってことです。

なおこの実行環境はWindows10です。
###コマンドプロンプトにおいて
まずはじめに適当なフォルダーを作ってそこに適当なinput用のinput.txtファイルとinput()関数が入ったmain.pyファイルをぶち込んでみましょう。

コマンドプロンプトでさっき作ったフォルダーに移動してpython main.py < input.txtと入力するとあら不思議、textファイルから読み込めているではありませんか!! ちなみにこれをopen(0).read()とかでやっても動きます。 ###Pythonにおいて わたしはsubprocessでやろうとして試行錯誤しまくって3日つぶしました。あほです。以下のソースコードでprint関数で出てくるoutputが出て来ます。t

元記事を表示

ゼロから始めるLeetCode Day9「701. Insert into a Binary Search Tree」

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

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

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

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

基本的にeasyのacceptanceが高い順から解いていこうかと思います。

前回
[ゼロから始めるLeetCode Day8 「1302. Deepest Leaves Sum」](https://qiita.com/KueharX/items/130795e0efc26d71897c)

# 問題
[701. Insert into a Binary Search Tree](https://leetcode.com/probl

元記事を表示

【Python】ブール演算子(or/and)はブール値を返さない

Pythonには`or`や`and`や`not`という演算子が存在していますが、これらはブール演算子と呼ばれます。

## Pythonにおける真理値

Pythonはどのようなオブジェクトも真理値(真偽値)として表すことができ、組み込み関数の中では以下のようなものが偽と判定されます。

– 偽であると定義されている定数: None と False
– 数値型におけるゼロ: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
– 空のシーケンスまたはコレクション: ”, (), [], {}, set(), range(0)

また、オブジェクトのクラスが`__bool__()`メソッドを定義しており、それが`False`を返す場合か、`__len__()`メソッドを定義していて0を返す場合には偽と判定されます。

判定の際には組み込み関数`bool()`を利用します。

“`python
>>> bool(None)
False
>>> bool(False)
False
>>> bool(0)
False
>>> bool(“”)
False
>>>

元記事を表示

Cloud StorageへPythonを使ってファイルをアップロードする方法【RaspberryPIで定点カメラを作る #1】

# 最初に
RaspberryPIで定点カメラを作ったので備忘録 第一弾です。
動画も作成したのでよろしく!
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/rqwImAxRjec/0.jpg)](http://www.youtube.com/watch?v=rqwImAxRjec)

# 分かること
* google cloud storageのアップロード方法

# 作成
## 用意するもの

* GoogleCloudPlatformのアカウント

## 手順
### 1.GoogleCloudPlatform関連

#### GoogleCloudPlatform(GoogleCloudStorage)って?
基本的には下記のようなサービスです。
>Googleが提供するクラウドにある巨大なフォルダのようなもので、ファイルを書き込んだり 読み込んだりが簡単に出来るサービスです。
>価格は無料分もありますが、読み込み・書き込み・存在するデータサイズで課金されていきます。

**Cloud側設定**
GoogleCloudP

元記事を表示

GiNZA v3.1で言語処理100本ノック 2020をやった 第4章

# はじめに
満を持して[言語処理100本ノック 2020](https://nlp100.github.io/ja/)が公開されたので早速やってみます。

第4章ではMeCabで形態素解析します。が、せっかくなので[GiNZA](https://megagonlabs.github.io/ginza/)でやります(といっても、最初しか使いませんでしたが)。

# 第4章: 形態素解析
夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をMeCabを使って形態素解析し,その結果をneko.txt.mecabというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.

なお,問題37, 38, 39はmatplotlibもしくはGnuplotを用いるとよい.

“`python:コード
import spacy
import pandas as pd
import pprint
from functools import reduce
import collections
import matplotlib.pyplot as plt
impor

元記事を表示

multiprocessing備忘録

# multiprocessingの備忘録

環境はWindows10

## PoolでLockしたい場合はManagerからLockを生成する

※multiprocessing.Lockではだめ。

“`python
from multiprocessing import Pool,Manager
import logging

LOGGER = multiprocessing.get_logger()
LOGGER.setLevel(logging.ERROR)

def f(lock,x):
lock.acquire()
try:
LOGGER.error(‘hoge{}’.format(x))
finally:
lock.release()

return x*x

def main():
m = Manager()
lock = m.Lock()
with Pool(2) as p:
jobs = [ p.apply_async(f, (lock,i)) for i

元記事を表示

DjangoのHTMLテンプレート

# はじめに

ここでは、djangoのHTMLテンプレートファイルの作成方法について解説します。
モデルとしては、[前の記事](https://qiita.com/yukiya285/items/327d440910d7a8307562)に書いている`SampleModel`を利用するものとします。

# HTMLファイルにおける変数、関数の埋め込み

HTMLファイル内で、{{ 変数名 }}とすると、`views.py`から渡された変数をHTMLファイル内に埋め込むことができます。
また、{% 関数名 引数1 引数2 … %}とすることで、関数を用いて表示内容を制御することもできます。

## レコード一覧の表示

クラスベースビューの場合、表示するレコード一覧が`モデル名_list`としてテンプレートに渡されます。
このレコード一覧を`{% for %}`を用いて一つずつ取り出して、表示します。
関数ベースビューの場合も同様に、モデルのレコード一覧を`context`としてHTMLファイルに渡すようにすると良いでしょう。

“`html:app/samplemodel_

元記事を表示

pythonでwebサイトをスクレイピングするときのtips

# はじめに

スクレイピングすることがあったので、そのときに得た小技の整理です。

# 使った環境

* python 3.x
* [requests](https://requests.readthedocs.io/en/master/)
* [Beautiful Soup 4](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)
* [Pycharm](https://www.jetbrains.com/ja-jp/pycharm/)

## 補足1

windowsでもpythonのインストールはかなりかんたんです。
[pythonの公式サイト](https://www.python.org/downloads/windows/)から、インストーラーをダウンロードして、実行するだけです。

Pycharmをつかえば、venvでの実行環境をつくるのもかんたんです。
pycharmからのterminalで、つくったpythonスクリプトの実行もできます。とくにこだわりがなく、さくっと実行環境をつくりたいならPycharmは

元記事を表示

pythonでPDFファイルを読み込むまわり

## Web上のpdfファイルをダウンロードして、そのpdfファイルをpythonで読み込む
 pdfをpythonで扱う際のモジュールとして、pdfminerシリーズがあって、今回はpython3.xで動かすので、「*pdfminer3k*」をpipコマンドでインストールして、ネット上のpdfをwgetコマンドでローカルに一旦ダウンロードして、そのpdfをpdfminerのオブジェクトに読み込ませてテキストが抽出できるか試してみた。

■サンプルpdf:
JPX適時開示情報の「決算発表の延期に関するお知らせ」(≒ XBRLが付いていないリリース)
pdf_20200502.png

■スクリプト

“`python:readingpdf.py
!pip install pdfminer3k

from pdfmi

元記事を表示

Pythonからコマンドを実行

# コード
“`py
import subprocess
import sys

def exec_cmd(cmd):
# cmd文字列の前後にスペースが入っていたら削除 -> スペースで分割しlist化
cmd_split = cmd.strip().split()
# stdoutの設定で標準出力を取得
cp = subprocess.run(cmd_split, stdout=subprocess.PIPE)
# cp = subprocess.check_output(cmd_split)
if cp.returncode != 0:
print(f'{cmd_split[0]} faild.’, file=sys.stderr)
sys.exit(1)
# 標準出力があれば返す
if cp.stdout is not None:
return cp.stdout
“`

# 実行

コマンドを文字列でそのまま渡す

“`py
cmd = ‘touch fil

元記事を表示

Python – 複数条件でのif文判定挙動(順番が違うだけなのに)

#はじめに
環境については下記の通り

“`txt:bash
$ python3 –version
Python 3.6.8
“`

#if文の判定挙動
if文の条件式が複数ある場合、前から順番に処理されていく。
and演算子の場合は、一つでもFalseの条件式が見つかった時点で、
その後の条件式の判定は行われず、else部分の処理が行われる。

下記コードはif文の条件式の順番が違うだけだが、
処理結果に違いが出てくる。

“`python:test.py
l = [0] * 3
# l = [0,0,0]

print(“0 <= i < 3 を先に判定する場合") for i in range(4): if 0 <= i < 3 and l[i] == 0: print("i = {} 成功".format(i)) else: print("i = {} 失敗".format(i)) print("0 <= i < 3 を後に判定する場合") for i in range(4): if l[i] == 0 and

元記事を表示

C#エンジニアが初めてpythonを学習して感じた違い

どうも、[筋トレ臨床工学エンジニアken](https://twitter.com/ce_fitness_note)です。

Qiitaで初めての投稿です。

僕は普段はC#を使って医療システムの開発業務を行っています。
機械学習の方にも力を入れていこうと思い、pythonの学習を始めました。

学習といってもProgateのpythonコースを一回りやったほどですが、C#と記述の仕方など異なるところについて簡単にまとめます。

C#、C++、VBあたりを普段使っていて、これからpythonを学習したいという人は、この両者の違いを予め知っておくと学習が捗るかと思います。

## コードから見るC#とpythonの簡単な違い

### 文の終わりのセミコロンいらない
“`C#:C#
Console.WriteLine(“Hello C#”); //ステートメントの末尾には必ずセミコロン
“`
“`python:python
print(“Hello python”)
“`

**ステートメントの末尾のセミコロンがpythonの場合は不要です。**
普段C#のようなセミコロンが

元記事を表示

OTHERカテゴリの最新記事