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

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

[やってみたが力尽きた] AtCoder 版!蟻本 (初級編) [2-1-2 Lake Counting (POJ No.2386)]

## はじめに

筆者はAtCoderを取り組み始めたアラフォー・Unコーダである(非ソフトウェア職)。

[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)に蟻本記載例題の類似問題が記載されている。

[AtCoder](https://atcoder.jp/?lang=ja)を利用してジャッジできるアルゴリズムの良問が選別されているので、初学者にうってつけであるらしい。

上記記事著者である、けんちょん (Otsuki)@drken氏に感謝。

筆者は[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)を頼りにスキルアップを図っている途中である。
* [1 いざチャレンジ!でもその前に — 準備編に取り組んだ過去記事](https://qiita.com/tagtagtag/items/eaa0655d26cdcbd5202e)

正直筆者には難しすぎて辛い。。。

## 目的

* 筆者の競技

元記事を表示

初心者の初心者による初心者のためのDjangoチュートリアルまとめ⑤ (テスト)

#はじめに
この記事はDjangoの公式チュートリアルを進めていくシリーズものです。
今回は5記事目「はじめての Django アプリ作成、その 5」を進めていきます。

[初心者の初心者による初心者のためのDjangoチュートリアルまとめ① (プロジェクト作成~)](https://qiita.com/sanpo_shiho/items/6f2fbfd9bd3a18414fe6)
[初心者の初心者による初心者のためのDjangoチュートリアルまとめ② (Model, Admin)](https://qiita.com/sanpo_shiho/items/4df3b31ea76775f4a918)
[初心者の初心者による初心者のためのDjangoチュートリアルまとめ③ (View)](https://qiita.com/sanpo_shiho/items/71b8cdd68d608897d103)
[初心者の初心者による初心者のためのDjangoチュートリアルまとめ④ (Generic View)](https://qiita.com/sanpo_shiho/items/a1f14fd

元記事を表示

Pythonの正規表記:入力データから妥当な日付表現だけを判定して抽出する方法

# 正規表記とは

正規表記を使えば、複雑なパターンや文字列など検索したり置換したりできます。今回はこの正規表記を使って、**入力されたデータから日付を表現する文字列だけを読み取り、抽出してみよう**と思います。

基礎なので詳細は割愛します。下記の参考文献に公式ドキュメントを張り付けていますのでそちらを読んでみてください。

個人的に正規表記は何だか複雑でとらえにくい感じがありますが徐々に慣れていこうと思っています。

標準ライブラリの`re`を使います

“`
import re
“`

# 入力データの用意

まずは日付のデータを用意します。
色々なデータを`DATE`としてリストに格納しました。日付とはまったく関係のないものや惜しいもの、区切りだけが違うものなど様々ありますね。

“`date.py
DATE = [“2020/01/05”,
“2020/1/5”,
“2020年1月5日”,
“2020-1-5”,
“2020/1/5”,
“2020.1.5”,
“2020/

元記事を表示

ディクショナイーをforループで処理する itemsメソッド

“`py:1
enemies = {“ザコ”:”スライム”, “中ボス”:”ドラゴン”, “ラスボス”:”魔王”}

for rank in enemies:
print(enemies[rank] + ‘が現れた!’)

“`

“`:1の実行結果
スライムが現れた!
ドラゴンが現れた!
魔王が現れた!
“`

ディクショナリのキーと値をペアで取り出すにはitemsメソッドを使う

“`py:キーと値をペアで取り出す
enemies = {“ザコ”:”スライム”, “中ボス”:”ドラゴン”, “ラスボス”:”魔王”}

for rank, enemy in enemies.items():
print(rank + ‘の’ + enemy + ‘が現れた!’)
“`

“`:キーと値をペアで取り出すの実行結果
ザコのスライムが現れた!
中ボスのドラゴンが現れた!
ラスボスの魔王が現れた!
“`

ここでenemies.items()の中身は何なのか、、、、

“`py:2
enemies = {“ザコ”:”スライム”, “中ボス”:”ドラゴン”, “

元記事を表示

タプルのアンパッキング

“`py:1
num_tuple = (10, 20)
print(num_tuple)
“`

“`:1の実行結果
(10, 20)
“`

“`py:2
x, y = 10, 20
print(x, y)
“`

“`:2の実行結果
10 20
“`

“`py:タプルの展開を使って値の入れ替え
i = 10
j = 20
print(i, j)
i, j = j, i
print(i, j)
“`

“`:タプルの展開を使って値の入れ替えの実行結果
10 20
20 10
“`

元記事を表示

Python3を始めよう。〜何を主言語として選べばよいか迷っている子猫たちのために〜

Pythonは1991年に開発された言語で、組み込みから、webプログラミングから、アプリ開発から、自然言語処理から、人工知能から、ゲームも作れるし、GUIもあり、広汎に活用されている言語です。リスト処理はできるし、当然、ガベージコレクションもあるし、多倍長演算もできるし、オブジェクト指向としても、手続き型言語としても記述可能だし、初学者にもとっつきやすいし、基本的にクロスプラットフォームでLinux,MacOS,Windowsと使えるし、多彩なモジュール群があり、基本的にインタプリタで、実行速度は遅い部類ですが、コンパイラも用意されており、pythonは、今の、これからの言語と言えそうです。ただ、Python2は2020年に開発が終わるので、これから始めるのには、Python3が良いです。

ここでは、プラットフォームは、Ubuntu18.04LTSを取り上げます。

導入は、以下のページをお読みください。
Ubuntu18.04にPyhton3.7を導入や設定をしよう!

コンパイ

元記事を表示

Google Colaboratory(GPU)上でBERTのチュートリアルを行う

この記事では、GoogleColaboratoryのGPUを使用して、BERTのチュートリアルを行う方法を書いていきます。
学習済みモデルは、GoogleDriveに保存し、GoogleColaboratoryにドライブをマウントして使用します。

***注意**
GoogleDriveに学習済みモデルがデータセットを保存するため、`500MB`の空きが必要です。
一度だけ試す場合は、GoogleDriveとGoogleColaboratory、を連携せず、GoogleColaboratoryのGPUインスタンス上にモデルやデータセットを保存する方が良いかもしれません。

# BERTのチュートリアル
BERTのGitHubリポジトリにあるチュートリアルを動かします。
BERTのGitHubはこちらです。
[google-research/bert: TensorFlow code and pre-trained models for BERT](https://github.com/google-research/bert)

READMEにある`Sentence (and sent

元記事を表示

ケモインフォマティクスで学ぶPythonの条件分岐

# はじめに

[ケモインフォマティクスで学ぶPythonのデータ構造](https://qiita.com/yukiya285/items/874c9119a9bcf93afbfa)に引き続き、リピドミクス(脂質の網羅解析)を題材として「条件分岐」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。

[製薬企業研究者がPythonのデータ構造についてまとめてみた](https://qiita.com/yukiya285/items/1db03558c38f1405dbbb)

# if文

`if 条件式:`として、次の行に、条件式が成り立つときの処理を記述します。
`if`の次の行は、半角4文字分インデントして書き始めます。

“`python
Un = 0

if Un == 0:
print(‘saturated fatty acid’)
else:
print(‘unsaturated fatty acid’)
“`

`else`は、`if

元記事を表示

Docker で作ったWebサーバ(app.py by Flask)を動かすテスト(続)

昨日の続き。

1. GCPで管理するtagをつけたDocker Image を用意する
2. Docker Image を Google Registryにpushする。(docker push)
3. Container を用意する (kubernetesを利用)
4. Google Registry にあるDocker Image を Deploy する
5. ブラウザで接続確認
6. 削除

![20200105-gcpfig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294040/790adb9a-cd72-7e4f-1a77-6c7c06cad70e.png)

昨日作成したpython Flaskの簡易HTTPサーバをDocker image をGCPで動かしました。昨日は docker run でローカルで動いたものが、GCPで割り当てられたノートで動作し、割り当てられたIPアドレスに外部からアクセスできます。

# 1. GCPをrepository にする Docker Imag

元記事を表示

zip

“`py:1
players = [‘勇者’, ‘戦士’, ‘魔法使い’]
enemies = [‘スライム’,’ドラゴン’, ‘ガーゴイル’]

for i in range(len(players)):
print(players[i] + ‘は’ + enemies[i] + ‘を攻撃した’)
“`

“`:1の実行結果
勇者はスライムを攻撃した
戦士はドラゴンを攻撃した
魔法使いはガーゴイルを攻撃した
“`
zip関数を使って書くと

“`py:zipで
players = [‘勇者’, ‘戦士’, ‘魔法使い’]
enemies = [‘スライム’,’ドラゴン’, ‘ガーゴイル’]

for player, enemy in zip(players, enemies):
print(player + ‘は’ + enemy + ‘を攻撃した’)
“`

“`:zipでの実行結果
勇者はスライムを攻撃した
戦士はドラゴンを攻撃した
魔法使いはガーゴイルを攻撃した
“`

元記事を表示

PythonのasyncioとThreadingでベンチを取ったらasyncioがThreadingに圧勝した

# PythonのasyncioとThreadingでベンチを取ったらasyncioがThreadingに圧勝した

## 1. ?
新年あけましておめでとうございます。

しばらく何も投稿していなかったのですが、心身が安定し、やるべきことをやっていくぞ、という気持ちに少しなれています。この気持を高めていって、いろいろアチーブしたいです。。。?

Python 3.6で色々知識が止まっていたので、年末年始を利用してPython3.8に上げるととも様々な組み込み関数の更新や、今までキャッチアップできていなかった機能について調べていきました。

Python 3.7 ~ 3.8では、最近流行りのcoroutineのasyncio関連の関数がPythonにて成熟して普段遣いに良さそうな関数と記法が揃ってきています。

よく並列化という文脈でasyncioとThreadingは同様のもののように語られますが、使い方と想定する状況と設計が大きく違うし、後述のベンチマークではパフォーマンスも大きく違うことがわかりました。

## 2. asyncioとThreadingの違いとはなに?

元記事を表示

enumerate

“`py:1
for player in [‘勇者’, ‘戦士’, ‘魔法使い’]:
print(player)
“`

“`:1の実行結果
勇者
戦士
魔法使い
“`

これにインデックスも一緒に出力したい場合、

“`py:indexも
i = 0
for player in [‘勇者’, ‘戦士’, ‘魔法使い’]:
print(i, player)
i += 1
“`

“`:indexもの実行結果
0 勇者
1 戦士
2 魔法使い
“`

ここでenumerate関数を使えば、
もっと簡単に書ける

“`py:enumerate
for i, player in enumerate([‘勇者’, ‘戦士’, ‘魔法使い’]):
print(i, player)
“`

“`:enumerateの実行結果
0 勇者
1 戦士
2 魔法使い
“`

元記事を表示

input と readlines

“`py:input
line = input().rstrip()
print(line)
“`

“`:入力
勇者は荒野を歩いていた。
“`

“`:inputの実行結果
勇者は荒野を歩いていた。
“`

“`py:readlines
import sys
lines = sys.stdin.readlines()
print(lines)
“`

“`:入力
勇者は荒野を歩いていた。
スライムが現れた。
勇者はスライムと戦った。
“`

“`:readlinesの実行結果
[‘勇者は荒野を歩いていた。\n’, ‘スライムが現れた。\n’, ‘勇者はスライムと戦った。’]
“`

改行が出力されてしまうので、

“`py:readlines改
import sys
lines = sys.stdin.readlines()
print(lines.rstrip())
“`

“`:入力
勇者は荒野を歩いていた。
スライムが現れた。
勇者はスライムと戦った。
“`

“`:readlines改の実行結果
[‘勇者は荒野を歩いていた。’, ‘スライムが

元記事を表示

pandasのエラー対処法(備忘録)

##1. はじめに
本記事は備忘録であり、人に見せようと思って書いているものではありません。そのため、分かりにくい表現やニッチな内容が含まれているかもしれません。

##2. mergeができない
“`python:merge.py
import pandas as pd
import numpy as np

a = np.range(9).reshape(3,3)
b = np.range(9).reshape(3,3)

df_a = pd.DataFrame(a, columns=[‘A’, ‘B’, ‘C’])
df_b = pd.DataFrame(b, columns=[[‘A’, ‘B’, ‘D’]])

print(df_a)
print(df_b)
“`
とすると

“`python:merge_output.py
A B C
0 0 1 2
1 3 4 5
2 6 7 8
A B D
0 0 1 2
1 3 4 5
2 6 7 8
“`
のように出力される。
このdf_aとdf_bをmergeしたい。

元記事を表示

ビット演算による、与えられた文字列の中の全ての文字列(順序入れ替えなし)を出力するコード(Python)

ビット演算によって、与えられた文字列の中の全ての文字列を出力するコードです。Cで書いていましたが、日本語に対応させるため、pythonで書き直しました。

“`alice.py
#!/usr/bin/python3

import sys
word=sys.argv[1]
K=1
N=len(word)
t=1

def nextset(x):
smallest=x & -x
ripple = x + smallest
new_smallest = ripple & – ripple
ones =((new_smallest // smallest) >>1)-1
return ripple | ones

def printset(s):
for i in range(N):
if (s & 1):
print( word[i] , end=””)
s=s>>1
print(“”)

def conv(k):
global t
x= (1 << (k)) -1 while True: if (x&~((1<

元記事を表示

初心者の初心者による初心者のためのDjangoチュートリアルまとめ④ (Generic View)

#はじめに
この記事はDjangoの公式チュートリアルを進めていくシリーズものです。
今回は4記事目「はじめての Django アプリ作成、その 4」を進めていきます。

[初心者の初心者による初心者のためのDjangoチュートリアルまとめ① (プロジェクト作成~)](https://qiita.com/sanpo_shiho/items/6f2fbfd9bd3a18414fe6)
[初心者の初心者による初心者のためのDjangoチュートリアルまとめ② (Model, Admin)](https://qiita.com/sanpo_shiho/items/4df3b31ea76775f4a918)
[初心者の初心者による初心者のためのDjangoチュートリアルまとめ③ (View)](https://qiita.com/sanpo_shiho/items/71b8cdd68d608897d103)

#はじめての Django アプリ作成、その 4
https://docs.djangoproject.com/ja/3.0/intro/tutorial04/

###Write a m

元記事を表示

言語処理100本ノック 2015をやったら結構Python基礎力がついた 第1章

# はじめに
今更ですが、Pythonの勉強がてら[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)をやってみました。最初は何も見ずにやってみて、その後、他の方の100本ノックの書き方を参考に、より良い(スマートな)書き方でやり直してみます。

より良い書き方の参考文献は最後にまとめて記載しています。

# 第1章: 準備運動

## 00. 文字列の逆順
文字列”stressed”の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.

“`python:コード
input_str = ‘stressed’
result = input_str[::-1]
print(result)
“`

“`:出力結果
desserts
“`

### より良いコード
スライスのステップに負の値を設定すると末尾から見てくれる。これより大きく変わるのはなさそう。

## 01. 「パタトクカシーー」
「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.

“`python:コード

元記事を表示

for文 range

0から9まで出力させたい場合

“`python:めんどくさい
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for num in num_list:
print(num)
“`
だとめんどくさい。。。

“`py:range
for num in range(10):
print(num)
“`
の方がいい。

2から9まで出力させたい場合は、

“`py:2から9まで
for num in range(2, 10):
print(num)
“`

2から9までで3差で出力させたい場合は、

“`py:2から9までで3差
for num in range(2, 10, 3):
print(num)
“`

“`:2から9までで3差の実行結果
2
5
8
“`

Helloを10回出力させたい場合

“`py:Hello10
for i in range(10):
print(‘Hello’)
“`

iも一緒に出力させる場合は

“`py:Hello10_index
for i

元記事を表示

Homebrewのエラー

### Python update時、venvをリセットする時でたエラー

“`
$ brew cleanup
“`
で下記のWarningがありました。
`Warning: Skipping python: most recent version 3.7.6_1 not installed`

—-
アップデートします。

“`
$ brew upgrade
“`
で下記のエラー…
“`Traceback (most recent call last):
4: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `


3: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `require_relative’
2: from /usr/local/Homebrew/Library/Homebrew/global.rb:13:in `
1: from /System/Library/Frame

元記事を表示

svmでtfidfとword2vecを比較してみたゾ!

# はじめに

前回の記事の続きです。
https://qiita.com/teri/items/bc4e04316a1b14ae8365

# 前回の概要と考察

前回は、tfidf、svmを用いて、分類器を作りましたが、学習データにある単語を含めた文章については、期待通りの分類をしてくれました。しかし、学習データにない単語を含めた文章の分類は、期待通りには分類してくれませんでした。

この事象について、考えたのですが、tfidfの言語モデルは、分類器に用いる学習データと同じのデータを使う必要があるので、学習データの量が少ないと、ベクトル化に影響する単語が少なくなるんだと思うんですよ。(結局、データ量って大事なんですよね。。。)

# tfidfとword2vecを比較をしてみたい

前回は、tfidfを使いましたが、今回はword2vecを使った分類器を作って、結果を比較したいと思います。
word2vecはtfidfと違って、分類器の学習データと同じのデータを使う必要がないので、事前に大量のデータを学習させたword2vecの言語モデルを用いれば、色んな単語に対応させることができ

元記事を表示

OTHERカテゴリの最新記事