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

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

ゼロから始めるLeetCode Day19 「121. Best Time to Buy and Sell Stock」

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

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

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

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

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

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

前回
[ゼロから始めるLeetCode Day18 「53. Maximum Subarray」](https://qiita.com/KueharX/items/837a2bab7e2f6d94d449)

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

元記事を表示

初心者だって「Python完全に理解した」って言いたい

我が子「おぎゃあおぎゃあ!!Python全然わかんないよう!!」

ぼく「おやおや、Python初心者の我が子ちゃんがPythonわかんなくて今日もないとるで…」

ぼく「Pythonは誰でもさくっと簡単にプログラムを組むことができんねんけど、そのせいで仰山あるスーパー便利機能が知られていない気がすんねん。しかも便利機能を使おうとすると途端に意味わからんくなるんやな。」

ぼく「だから今回は比較的新しいけどあんまり知られてなさそうな文法とか紹介するで!みんなでPython完全理解マン目指そうな!」

# 目次

– [型ヒント](#型ヒント)
– [Docstring](#Docstring)
– [f-string](#f-string)
– [セイウチ演算子](#セイウチ演算子)
– [内包表記](#内包表記)
– [ジェネレータ](#ジェネレータ)

## 型ヒント

ぼく「最初はバージョン3.5で追加された型ヒントや!」

ぼく「Pythonは**動的型付け**言語なのはみんな知っとるか?」

ぼく「**動的型付け**っていうのは型を指定しなくても自動で判別してくれるってことな

元記事を表示

Pythonでソートする時のテクニック

## はじめに

Python3で競プロをしているときにソートの方法をド忘れすることがあるのでメモ

以下、インタプリタモードで実行しているため、行の最初に `>>>>` がついているものは入力だと思って見てほしい。

## list.sort() と sorted(list) の違い

`list.sort()` は元のリストをソートする。返り値は `None`

“`python
>>>> list = [2, 3, 5, 1, 4]
>>>> list.sort()
>>>> list
[1, 2, 3, 4, 5]
“`

`sorted(list)` は元のリストは変更せずにソートした結果を返す

“`python
>>>> list = [2, 3, 5, 1, 4]
>>>> sorted(list)
[1, 2, 3, 4, 5]
>>>> list
[2, 3, 5, 1, 4]
“`

## 逆順にソートしたい時

以下、 `list.sort()` でも `sorted(list)` でも同じオプションを使うので `sorted(list)` のみ扱う

元記事を表示

【django】アップロード画像を表示できない原因

djangoでアップロード画像の表示に苦戦したので、表示できない原因を残しておきます。
# 開発環境
– Windows 10(WSL Ubuntu18.04)
– django 3.0.5

# 前提条件
– FileField、ImageFieldなどを利用して画像アップロードができていること

# 画像を表示できない原因
## 1. settings.pyのMEDIA_ROOTとMEDIA_URLの設定が間違っている
MEDIA_ROOT→アップロードファイルを保存する場所を指定
アップロードした画像はMEDIA_ROOTで指定したディレクトリ内のupload_atで指定したフォルダ内に保存される。

MEDIA_URL→メディアディレクトリの公開用URLを指定
例えば、

MEDIA_URL=’/media/’とした場合、
http://127.0.0.1:8000/media/{画像名}が画像を表示するための公開用URLになる。

## 2. {アプリ名}/urls.pyにstat

元記事を表示

【自動化】WEBサイトの変更を検知してLINEに通知する

# はじめに
高校生になりました。
このコロナの影響で学校にいけなくなり、学校側が用意したWEBサイトを定期的に見てそのサイトに書いてある指示に従って自宅で学習するように言われましたが、そのWEBサイトが重く、また毎日更新を確認するのは面倒です。しかしできるだけ情報は早く入手したいです。そこでWEBサイトの更新を検知してLINEに通知するPythonのプログラムを書くことにしました。

# 全体の流れ
1. Pythonの標準ライブラリであるurllibを使ってWEBサイトのHTMLを取得します。
2. それをBeautifulSoupというライブラリを使って分析し、必要な部分だけ抽出します。
3. (2ループ目以降)今回抽出したものと前回抽出してファイルに保存したものを比較します。
3. 新しく抽出したものをCSV形式でファイルに保存します。
4. 3で比較した結果をLINENotifyで通知します。

これを繰り返します。
実行するたびに前回実行したときに取得したものと比較します。(このプログラム自体は毎回起動しては終了する)
このプログラム自体に定期的に実行する機能はなく、こ

元記事を表示

#Python基礎(#matplotlib)

環境は以前の記事で作った環境を使用しています。 → [Windows10でAnaconda python環境構築](https://qiita.com/hiwasawa/items/2d802b3471d4be1da341)
numpyの使い方に関しては以前の記事を参考にしてください。 
→ [#Python基礎(#Numpy 1/2)](https://qiita.com/hiwasawa/items/8907980293acc90c82ca)
→ [#Python基礎(#Numpy 2/2)](https://qiita.com/hiwasawa/items/9950f7882ca67407b805)

#1.Matplotlibインポート

グラフ描画 : `pyplot`モジュールを使用
jupyter lab上で描画 : `%matplotlib inline`

“`python
%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
“`

“`python
import num

元記事を表示

外部からDjango REST FrameworkのAPIを叩いた時にNot Foundが出る時の解決法

# 問題

Nuxt.jsからDjango REST Framework(以下DRF)のAPIを叩いて特定の情報を表示させようとした時にDjango側のログにNot Foundが出ました。

まずはDjango側の不具合かと思い、一旦DRFのコンソールで確認しましたが、データは存在し、かつ閲覧できる状態です。
単純な問題ですが、うっかりミスをしていたので念のため記事として残しておきます。

# 解決法

以上の前提条件からNot Foundが起こっている場合、十中八九エントリーポイントの設定を間違えています。

そもそもの前提の話ですが、Djangoのルーティングではurls.pyに記述されているもの以外のurlが打ち込まれた場合は404のエラーハンドリングをしていない場合は無条件でNot Foundになります。なので、Nuxt.js側で呼び出すエントリーポイントの記述を間違っている可能性が高いです。

例えば、

“`JavaScript
async asyncData ({ $axios, params }) {
try {
const user = awai

元記事を表示

Pythonでトランプのカードゲームを実装する

## はじめに

Pythonの入門として、[プログラミング入門者からの卒業試験は『ブラックジャック』を開発すべし](https://qiita.com/hirossyi73/items/cf8648c31898216312e5)に挑戦しようと思います。要件はそのまま参考にしております。不慣れな点もあるのでこここうしたらいいよ!とかあるとコメントいただきたいです!

## 実装前にやったこと

Pythonの構文などの学習については下記を参考に行いました。

* [独学プログラマー Python言語の基本から仕事のやり方まで](https://www.amazon.co.jp/%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-Python%E8%A8%80%E8%AA%9E%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8B%E3%82%89%E4%BB%95%E4%BA%8B%E3%81%AE%E3%82%84%E3%82%8A%E6%96%B9%E3%81%BE

元記事を表示

[Python] pytestで処理の遅い箇所を可視化して特定する

プロジェクトのテスト数が増えてくるとCI回すのも遅くなるし、ローカルでこまめにテスト回すぞっていうときもストレスは増えていきます。テストが1万件もあればしょうがないかな、という気にもなりますが、時に「あれ、なんかやたら遅いテストケースがあるぞ?」ということもあります。テストが遅い原因がプロダクトコードにあるのであればより問題です。
pythonのテストフレームワークはpytestを使っているので、以下pytestの場合はこんなことして遅い処理を探し出しているという備忘録。

主にやったことは以下の2つ。

① pytestの`–durations`オプションで処理時間の大きいテストケースを出力する
② [pytest-profiling](https://pypi.org/project/pytest-profiling/)でプロファイルして処理の遅い箇所を特定

# テストコード

本記事で使用したテストコードです。1~10000000の整数を順に突っ込んだリストを4パターンの方法で作成して最後にassertで比較しています。
**setup()**のなかでスリープを読んでいるの

元記事を表示

ゼロから始めるLeetCode Day18 「53. Maximum Subarray」

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

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

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

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

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

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

前回
[ゼロから始めるLeetCode Day17「169. Majority Element」](https://qiita.com/KueharX/items/fac33d3e067cccfed148)

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

元記事を表示

#Python基礎(#Numpy 1/2)

#1.Numpy
Numpy : Pythonの拡張モジュールで多次元配列を扱う際に便利

人より記憶メモリが少ない私はいつも、あれ?これどうだっけ?という状態に
陥ってその度に同じ検索ワードで検索をしてしまうのでこの機にメモしておこうと思います。

環境は以前の記事で作った環境を使用しています。 → [Windows10でpython開発準備](https://qiita.com/hiwasawa/items/2d802b3471d4be1da341)

#2.list to Numpy

pythonのリストからNumpy配列に変換する方法

“`
import numpy as np

a = np.array([0, 1, 2, 3, 4, 5]) # PythonのリストからNumPyの配列を作る
print(a)
“`
“`:実行結果
[0 1 2 3 4 5]

“`

###オブジェクトの型を取得・確認:type()関数
“`
print(type(a))
“`

“`:実行結果

元記事を表示

#Python基礎(#Numpy 2/2)

前回の記事の続きです。 [#Python基礎(#Numpy 1/2)](https://qiita.com/hiwasawa/items/8907980293acc90c82ca)
環境は以前の記事で作った環境を使用しています。 → [Windows10でAnaconda python環境構築](https://qiita.com/hiwasawa/items/2d802b3471d4be1da341)

# 1.Numpy 形状変換 reshape
1行6列の配列を2行3列に変換

“`python
import numpy as np

a = np.array([0,1,2,3,4,5])
b = a.reshape(2,3)
print(b)
“`
“`:実行結果
[[0 1 2]
[3 4 5]]
“`

reshapeの引数を-1にすることで、どのような形状の配列でも1次元配列に変換することができます。

“`python
import numpy as np

c = np.array([[[0, 1, 2],
[3, 4

元記事を表示

【Python】JSON 形式のデータを辞書型のオブジェクトとして利用する

# JSON 形式のデータは辞書型のオブジェクトとして利用できる

`xxx.json`などの拡張子が`.json`のファイルや、WebAPI を叩いて得られた JSON 形式のデータは
Python 上において、辞書型のオブジェクトとして利用することができます。

## 要約
– Python において、JSON 形式のデータは辞書型のオブジェクトとして利用ができる。
– `json`モジュールを利用する。
– ファイルの読み込みは `json.load()` を利用する。
– 文字列の読み込みは `json.loads()` を利用する。
– 書き込みには `json.dumps()` を利用する。

## JSON モジュールについて
Python において、JSON 形式データを利用するためには `json` モジュールを `import` する必要があります。

“`Python:jsonTest.py
import json
“`

## `json` モジュールを使ってみる
`json` モジュールを使用して、JSON 形式のデータを読み書きしてみます。

### 辞

元記事を表示

Python(Django)でwebサービスを作る(html表示編)

#注意
– pythonを使ったことがある人
– djangoを知らない、慣れてない人
– htmlをちょっとでも使える人
– windowsの人

#解らない、知りたい人
以下のページを参考にしてください。
[pip install django](https://www.sejuku.net/blog/50417#pip-2)
[cd プロジェクト名](https://eng-entrance.com/windows-command-cd)
[django-admin startproject プロジェクト名、python manage.py startapp アプリ名、
python manage.py migrate、python manage.py runserver](https://qiita.com/okoppe8/items/7e3de8a4dd40b48debea)

#準備
__コマンドプロンプト__でDjangoのインストール

“`
pip install django
“`

# プロジェクトの作成
Djangoでは、一つのアプリケーション

元記事を表示

Pytorch で MNIST をやってみた時のメモ

## はじめに

昨今の機械学習や Deep Learning の話題に少しでもついていけるように勉強するために、PyTorch で MNIST をやってみました。
この記事はメモなので、Pytorch で MNIST をやるために必要な知識をすべて網羅するものではなく、また、ちょっとわき道に逸れたような内容もあります。

## 参考ページ

– **DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ:**
– **Basic MNIST Example:**
– **PyTorchでMNIST:**
– **CNN in MNIST with PyTorc

元記事を表示

Pythonで簡単な物理シミュレーションをして可視化してみる

# はじめに
先日いつものようにtwitterを徘徊していたら、高校における物理の履修率が20%ほどに低下している旨のツイート)を見かけました。