Python関連のことを調べてみた2020年01月18日

Python関連のことを調べてみた2020年01月18日

Pythonで、デザインパターン「Composite」を学ぶ

GoFのデザインパターンを学習する素材として、書籍「[増補改訂版Java言語で学ぶデザインパターン入門](https://www.hyuki.com/dp/)」が参考になるみたいですね。

ただ、取り上げられている実例は、JAVAベースのため、自分の理解を深めるためにも、Pythonで同等のプラクティスに挑んでみました。

# ■ Composite(コンポジット・パターン)
Compositeパターン(コンポジット・パターン)とは、GoF (Gang of Four; 4人のギャングたち) によって定義された デザインパターンの1つである。「構造に関するパターン」に属する。Compositeパターンを用いるとディレクトリとファイルなどのような、木構造を伴う再帰的なデータ構造を表すことができる。
Composite パターンにお

元記事を表示

スクリプト言語の比較しながらGoのお勉強 〜 環境構築編(MacOS)

# ごあいさつ
はじめまして。@kuroseetsと申します。
2000年からフリーランスで仕事を始め開発12年、インフラ8年経験してきたオッサンです。
皆さんはどのプログラミング言語、スクリプト言語が好きですか?または仕事などで何をよく使っていますか?
開発をされている方だとJavaが多いのかな?またはC#?Ruby?PHP?
事務系でスクリプトを組む方などはVBScriptなども現役ですよね。
私は現在インフラ運用構築側にいますので、私を含めて周辺でよく使われているのが、Python, Ruby, Perl, Bash辺りが多く、最近ではさらにGolangが増えてきている印象です。(あくまで個人的主観で、ですよ
それぞれ好みはあるとは思いますが、環境や現場による制約で使えるもの使えないものがありまして、私もその都度現場でキャッチアップしてスキルを身に付けてきました。
現在では`Infrastructure as Code`と謳われるだけあって、構成管理の設定ファイル以外でも手を動かすことも増えてきたと身を以て感じています。
今回個人的にGolangを勉強しようと思っているのですが、

元記事を表示

万年歴の種:Zellerの合同式から或る日の曜日を得る

Zellerの合同式から、ある日の曜日が何曜日であるかを算出します。

“`calcal.py
#!/usr/bin/python3
import sys
import math
y = int(sys.argv[1])
m = int(sys.argv[2])
d = int(sys.argv[3])
youbia = [“日”, “月”, “火”, “水”, “木”, “金”, “土”]

if (m == 1 or m == 2):
md = m+10
yd = y-1
else:
md = m-2
yd = y

a = yd // 100
b = yd % 100
youbi = (math.floor(2.6*md-0.2)+d+b+math.floor(b/4)+math.floor(a/4)-2*a) % 7

print(“西暦”, y, “年”, m, “月”, d, “日は”, youbia[youbi], “曜日です。”,sep=””)

“`

出力例

“`
$ calcal.py 1967 5 12
西暦1967年5月

元記事を表示

[Python]同じ整数を別々の変数に代入したら参照するオブジェクトのIDが同じになる理由

Pythonの代入の挙動について学習していたときに出くわした疑問です。
## 同じ整数を別々の変数に代入したら参照するオブジェクトのIDが同じに。なんで?
以下のように、変数 a、b に 10 をそれぞれ代入したとき、

“`python:Python
>>> a = 10
>>> b = 10
“`

自分の頭の中では、こんな↓風に「**値はどちらも 10 だけどメモリ上には2つのオブジェクトが生まれ、それぞれにa, bの名前が付いている。ID(メモリアドレス)はもちろん別を指し示す**」というイメージでした。[Pythonの代入は束縛/bind](https://docs.python.org/3/reference/simple_stmts.html#assignment-statements)というやつですね。
![スクリーンショット 2020-01-18 1.49.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283290/3d4bd57b-0a27-b644-b1f8-925170

元記事を表示

illustration2vecをkerasモデルに変換するコードを作ってみた

#概要
https://github.com/rezoo/illustration2vec
illustration2vecはイラストの特徴やタグを検出できるモデルです。モデルの構造はほぼVGGモデルです。オリジナルのVGGとは変更されている箇所もあるので、詳細は上記リンクに解説論文があるのでそちらを。caffeとchainerのモデルです。面白いモデルですがchainerが開発終了するようなので、ぜひ再利用したいと思いkerasへの変換コードを書きました。torchは使ったことがないのでスルーで。

実行はgoogle colaboratoryで行ったので以下にリンクを。
https://colab.research.google.com/drive/1UZN7pn4UzU5s501dwSIA2IHGmjnAmouY

リンク先が開けない場合は以下をcolabにコピペすれば動くと思います。

全コード

“`python
!git clone https://github.com/rezoo/illustration2

元記事を表示

tf-pose-estimationを動かすためにインストールが必要な物まとめ

![cmu_tennis_v3_10_data.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178837/c8a1628e-e155-20aa-5aee-2f984be147d2.jpeg)

#概要
tf-pose-estimationを動かす時に事前にインストールすべき物が結構あってそれが原因で詰まったりしたのでメモ
ちなみにtf-pose-estimationの導入は以下の記事を参考に行った。
https://qiita.com/ikekou/items/9a632b10588b423db172

#インストールが必要な物
##Git
以下のコマンドを実行する際に必要になる事前作業です。
“git clone https://www.github.com/ildoonet/tf-pose-estimation“

何はともあれGitをいれる。Git入れないとプロジェクトのクローンも実行できない。

MacでGit導入(Homebrew利用)
https://qiita.com/kimuray

元記事を表示

Pythonのクラス内変数を外部から参照できなくする

以下のようなプログラムはクラス内変数のtestが外部から操作可能になっており、バグを生む可能性があります。

“`Python
class MyClass(object):

def __init__(self):
self.test = ‘test’

t = MyClass()
print(t.test)
t.test = ‘test2’
print(t.test)
“`

実行結果

“`
test
test2
“`

関数内の変数にダブルアンダースコアを付けることで外部から参照できなくさせることができます。参照する際にはプロパティ関数を作ってreturnで返すようにします。以下のプログラムだと’test2’の代入のところでエラーが出ます。

“`Python
class MyClass(object):

def __init__(self):
self.__test = ‘test’

@property
def test(self):
return self.__tes

元記事を表示

[Python3 入門 11日目]6章 オブジェクトとクラス(6.1〜6.2)

#6.1 オブジェクトとは何か
– Pythonに含まれるオブジェクトは全てオブジェクト
– オブジェクトはデータ(変数、属性と呼ばれる)とコード(関数、メソッドと呼ばれる)の両方が含まれている。
– オブジェクトは何らかの具体的なものの一意なインスタンス(実体、実例)を表している。
– オブジェクトは名詞、オブジェクトのメソッドは動詞と考えることができる。オブジェクトは個別のものを、メソッドは他のものとどのようなやりとりをするかを定義する。

#6.2 classによるクラスの定義
– オブジェクトはプラスチックのボックスに喩えたが、**クラス**はそのような**ボックスを作るための鋳型**のようなもの。

“`py

#Personクラスの定義
>>> class Person():
… pass

#オブジェクトはクラス名を関数のように呼び出して作る。
>>> someone=Person()
>>> class Person():
… def __init(self):
… pass

#__init__()は

元記事を表示

ナチュラルソート

以下の変数を並び替える状況があるとする。

“`py
sample = [“a_12”, “a_2”, “a_0”, “a_10”, “a_4”]
“`

例えば組み込み関数の `sorted` を利用すると

“`py
sorted(sample)

# [‘a_0’, ‘a_10’, ‘a_12’, ‘a_2’, ‘a_4’]
“`
という結果が得られる。これは人間の直感には反する結果だろう。

`[‘a_0’, ‘a_2’, ‘a_4’, ‘a_10’, ‘a_12’]` という結果が得られる方が自然な感じがする。
この自然な感じがする並びは、 [Natural Sort Order](https://en.wikipedia.org/wiki/Natural_sort_order) と呼ばれ、そのソート方法はHuman Sortingとも呼ばれる。

この並び順をpythonで再現する。

## ライブラリを利用する場合

`natsort`を利用する。

https://pypi.org/project/natsort/

“`
$ pip install nat

元記事を表示

Python の __init__.py とは何なのか

Python を使い始めると、ディレクトリの階層で分けてファイルを管理したくなります。
そこで出てくるのが `__init__.py` ファイル。

これは一体何者なのか。
色々と情報がころがってはいるものの、なかなか納得行くように説明しているものが見当たりません。
Python のドキュメントでも、何を参照すれば正解なのかがわかりにくい[^注1]。

[^注1]: 「[Python チュートリアル – モジュール](https://docs.python.org/ja/3.8/tutorial/modules.html)」を読むのが正解のようです(利用しているバージョンに合ったドキュメントを参照してください)。チュートリアルとして、最初に読んだときは、全然理解できず、記憶の彼方に飛んでいってしまいました。

ということで、`__init__.py` についてまとめてみました。(少し長いです)
読み物形式で書いていますので、結論(「[`__init__.py` の役割](#__init__py-の役割)」)だけ見たい方はスクロールして最後の方を読んでください。
python コードの例

元記事を表示

【Python】Poetry始めてみた & Pipenv から poetry へ移行した所感

## 動機

近頃pipenv のインストールがかなり遅いので poetry を試してみました。
一通り使ってみてわかったことをまとめます。Pipenvを使っているのでそことの比較も。
パッケージ関連のコマンド(build, publish…)に関してや、細かい機能に関しては記述しないので、[公式 Doc](https://python-poetry.org/docs/)を参考にしてください。

## Poetryについて

Poetryは、Pythonのパッケージ管理ツールです。Pipenvと同様、依存関係を解決しパッケージのインストール、アンインストールを行ってくれ、
poetry.lockファイルによって、他のユーザーも適切なバージョン、依存関係でパッケージをインストールすることが出来ます。
仮想環境を利用でき、パッケージングも可能です。

## 環境

– CentOS 7.6.1810
– pyenv 1.2.14-8-g0e7cfc3b
– poetry 1.0.2

Python は pyenv でインストールしたものを使う。

– Python 3.7.4 (p

元記事を表示

学習記録 その23(27日目)

#学習記録(27日目)
勉強開始:12/7(土)〜

教材等:
・大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年):12/7(土)〜12/19(木)読了
・Progate Python講座(全5コース):12/19(木)〜12/21(土)終了
・Andreas C. Müller、Sarah Guido『(邦題)Pythonではじめる機械学習』(オライリージャパン、2017年):12/21(土)〜12月23日(土)読了
・[Kaggle : Real or Not? NLP with Disaster Tweets](https://www.kaggle.com/c/nlp-getting-started) :12月28日(土)投稿〜1月3日(金)まで調整
・Wes Mckinney『(邦題)Pythonによるデータ分析入門』(オライリージャパン、2018年):1/4(水)〜1/13(月)読了
・**斎藤康毅『ゼロから作るDeep Learning』(オライリージャパン、2016年):1/15(水)〜**

#『ゼロから作るDeep Learning』
p

元記事を表示

VS CodeでDocker開発コンテナを便利に使おう

# はじめに

– ローカル環境で開発し、Linux環境にデプロイしてテストするのが面倒
– Dockerを使っていい感じに開発環境を作りたい
– しかし色々設定や構築が面倒

そんな方のためにDockerコンテナを用いた開発環境をVS Codeから便利に構築、運用できる拡張機能「Remote-Containers」の使い方のご紹介です。

# この拡張機能の素晴らしさ

VS Codeの拡張機能「Remote-Containers」はコンテナ内でVS Codeを立ち上げ、ホストマシンのVS Codeと通信させることであたかもローカル環境で開発しているような操作感でコンテナ内開発が行えるというものです。

詳しい構成は公式ドキュメントに図があります。

![](https://code.visualstudio.com/assets/docs/remote/containers/architecture-containers.png)
(https://code.visualstudio.com/assets/docs/remote/containers/)

また、複数の開発環境をV

元記事を表示

python生成csv的定义单元格式为字符串

example = 1102 + ‘\t’

元記事を表示

【対決! 人力 vs Python】結局、センター試験の数学はPythonで解くのと、自力で解くのと、どっちが速いのか?

# どこかで見たことあるネタだなと思ったら

やっぱり、先人がいました(ほかにもあるかも)。
**素晴らしい!**

* [2015年センター試験数学IAを全てプログラム(Python)で解く](https://qiita.com/akai_banana/items/b328fe0116d248127a36)
* [2015年センター試験数学ⅡBをPythonで解く](https://qiita.com/massa142/items/b224a07c1b33e9a39cd8)

# 1. センター試験に持ち込めるもの

以下が持ち込めるようですが、現時点で、**Pythonのインタプリタは持ち込めない**ようなので、注意が必要です。
開発者にとって、開発環境は鉛筆のようなものという主張も**通じない**と思います。
**※許可されているもの以外を持ち込むのは絶対に絶対にやめましょう!**

“`
* 黒鉛筆(H,F,HBに限る。和歌・格言等が印刷されているものは不可。)

元記事を表示

【Django】formでzipのバリデーションをしようとして沼にはまった話 【TDD】

# Djangoさん「UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbb in position 10: invalid start byte」

formのFileFieldに複数ファイルをまとめたzipをアップロードして保存しようとするとこのエラーになった。
結論から言うと、テストの時に放り投げていたデータ形式が悪かったみたい。

ただ、通るようになってエラーを再現しようとするとなぜかクリアするので、エラーの再現が困難なのが意味わからない。めっちゃ困ってたのに・・・

# 解決策
まずエラーが出てたときは、

“`python:tests.py

self.zip_error_test = File(open(‘tdd.zip’))
file_data = {‘upload_train_file’: uploadedFile }
form = DocumentForm(file_data)
form.is_valid()
“`

端折りますがこんな感じでした。
こんなことするとdjangoさんが怒ります。
ちなみに1

元記事を表示

Pandasで特定の”文字列”を含む行を抽出

先日、基本的なPandasの条件抽出についてまとめた。
[https://qiita.com/M_Faust/items/05a79e0372bf9c9003e5][1]
[1]:https://qiita.com/M_Faust/items/05a79e0372bf9c9003e5

型が文字列のDataFrameに対して、ある特定の文字列を含む場合の条件抽出は下記。

“`python:特定の文字列を含む場合の条件抽出
>>> df = pd.DataFrame ({“A”:[“hello”,”helloa”,”ahello”,”bye”]})
>>> df_extract = df.query (“A.str.contains (‘hello’)”,engine=”python”)
>>> df_extract
A
0 hello
1 helloa
2 ahello
“`

環境美化活動がお金になるアプリを運営しています(PythonがBackendで使われているので載せます)。
[https://play.google.com/store/apps

元記事を表示

Pytorchのニューラルネットワーク(CNN)のチュートリアル1.3.1の解説

##想定読者
Pytorchのニューラルネットワーク(CNN)のチュートリアル1.3.1についての解説です。

CNNの仕組みはふんわり掴めていて、Pythonはなんとなく触ったことがあって、初めてPytorchを勉強しようとしたものの、「公式チュートリアルよく分かんないな〜」、あるいは、「Pytorchどうやって勉強しよう〜」という方向けの記事です。そのため、割と丁寧に書いています。必要なところだけサク読みしてください。また、今回チュートリアルに出てこない引数については説明しません。今回はあくまで公式チュートリアルの理解に焦点を当てています。
この記事が解説するのは[Pytorch Tutorial 1.3.1](https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#backprop
)です。

#このチュートリアルでやること

このチュートリアルでは、「2次元の画像をニューラルネットワークに入れて目的関数まで出し(順伝播:forward propagation)、その後各パラメータ値を更

元記事を表示

[Python]type関数から型名を文字列で取得してみた

# Motive
[paiza](https://paiza.jp/)でRPGゲームとコード学習を融合した[コードクロニクル](https://paiza.jp/codechronicle)が最近リリースされました。

それで試しに問題をといていったのですが、入門者向けなので基本的な構文についての問題が繰り返し出題される形式だったので難易度は難しくないですが、下記の問題が出題されました。(全く同一ではないです。)

“`Python

#piの変数型を出力してください
pi = 3.14

print(“”) #int, str, floatのどれかを入力してください。
“`

答えは `print(“float”)` とすればいいのですが `type`関数がせっかくあるので利用できないかと考えたとです。:rolling_eyes:

# Method

シンプルに`type`関数を使うと、、、

`

元記事を表示

AWS CDKでVPC作ろうとしたら作れなかったとき

CloudFormationからAWS CDKに乗り換えようとして今日も元気にビルドを失敗したので解決方法をメモっておく。

### やりたいこと

私はただAWSのサンプルをビルドしたかっただけなんだ…!!
https://github.com/aws-samples/aws-cdk-examples/tree/master/python/ecs/fargate-load-balanced-service

###無慈悲なCREATE_FAILED

CloudFormationと違って抽象化が激しいので、一行でVPCを作れるんですよ。
その代わり中身を全く知らない。

##### VPCができる魔法の素晴らしいコード

“` Python
vpc = ec2.Vpc(
self, “MyVpc”,
max_azs=2
)
“`

##### 無慈悲に幻想を打ち砕くCREATE_FAILED

“` bash
$ cdk deploy
  ~略~
Do you wish to deploy these changes (y/n)? y
  ~略~
9/36 | 7:

元記事を表示

OTHERカテゴリの最新記事