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

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

enumerate

### はじめに
leetcodeの問題を解いていて解けたものの計算量がO(n^2)になってしまいました。
解説にO(n)のものがあり、`enumerate`を使っていて感動したので残しておきます。

### enumerate
forループを使うとき引数にインテラブルオブジェクトを指定すると要素とindex番号を取得できる。

*インテラブルオブジェクトとは、forループを使って取り出すようなオブジェクトのこと。
リスト、辞書、タプル、文字列など

`enumerate`の使い方は以下。
“`python
nums = [1, 10, 100]
for i, num in enumerate(nums):
print(i, num)
“`
実行結果は
“`
0 1
1 10
2 100
“`

### 使った結果
使う前はfor文の中にfor文を入れてこんな感じになってました。
“`python
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:

元記事を表示

初めてのPython、じゃんけんゲーム備忘録

こんにちはkmdと申します。

初投稿になります。
タイトル通り今回はPythonで簡単なじゃんけんのプログラムを組みました。
私は普段ネットワークの畑にいるためプログラムについてほぼ全くの無知です…

自動化やRPAを最近職場で見ることがあり、私も興味を持ったためプログラミングへ挑戦することにしました。
Udemyで少し勉強して基本的な?もので書けたと思います。

今回はさわり程度でアルゴリズムを理解するのに苦労しました。

“`janken.pty
import random

print(‘じゃんけんをします。 手を選んでね \n’)

global human
global com

def nyuryoku():
global human
human = int(input(‘1:グー 2:チョキ 3:パー \n —> ‘))
if human not in [1, 2, 3]:
print(‘1か2か3を入力してください’)
nyuryoku()
else:
janken()

def

元記事を表示

【AtCoder】ABC288 のA,B,C における Python解説

ABC 288のA,B,C 問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 910](https://atcoder.jp/users/tsuru1471)
230204 現在

# 目次
[はじめに](#はじめに)
[A.Many A+B Problems](#amany-ab-problems)
[B.Qualification Contest](#bqualification-contest)
[C

元記事を表示

Python + Tkinter – 統計的な調査に要する標本サイズを算出するアプリ

Tkinter学習の一環で統計的な調査に必要なサンプル数を算出するアプリを作ってみました。「統計WEB」の母比率の区間推定における必要なサンプルサイズの解説ページを参考に制作しました。

https://bellcurve.jp/statistics/blog/14347.html

# コード

“`python

from tkinter import *
from tkinter import font
from scipy.stats import norm

#ウィンドウのタイトル+サイズ
window = Tk()
window.title(“標本サイズ計算機”)
window.minsize(width=600, height=450)
window.config(padx=50, pady=20)

myfont = font.Font(family=’Helvetica’, size=20, weight=’bold’)
myfont_result = font.Font(family=’Helvetica’, size=24, weight=’bold’)
myf

元記事を表示

【AtCoder】ABC157E 「 Simple String Queries 」Python解説

# E.Simple String Queries

[問題ページ](https://atcoder.jp/contests/abc157/tasks/abc157_e)

難易度 : 1443

# 考察

type1 は **一点更新**、type2は **区間取得** 問題です。したがって、このクエリを高速に処理するためには **Segment Tree** を利用するのが良さそうです。

あとは、区間に登場するアルファベットの種類をどうやって管理するかを考えます。これにはいくつかの手段があります。

## 解法➀ アルファベットごとにセグ木を持つ

欲張って全てのアルファベットについて同時に考えようとするから状況が難しくなっています。
それよりも、アルファベットごとに独立に考えるほうが簡単です。つまり、**区間 $[l,r)$ 内に対象のアルファベットが含まれるか(存在するか) を求めることにします。**

そのためにはアルファベットごとに管理仕分ける必要があるので、**26本のセグメントツリー**を作成します。

元記事を表示

Pythonのself

### はじめに
最近pythonを勉強していて出会ったselfが少し曖昧だったので少しまとめておく。

### クラスとは
オブジェクトを生成する型のようなもの。
以下のように使われる。
“`python:qiita.py
class className():
pass

instance = className()
“`

### selfとは
インスタンス自身のこと。
以下のように使われる。
“`python
class className():
def __init__(self, strA, strB):
self.strA = strA
self.strB = strB

instance = className(“hello”, “qiita”)
print(instance.strA)
print(instance.strB)
“`
このコードでいう`instance`が`self`なのではないかという認識。

### 注意点
これは面白いなと思ったのがpythonはクラス変数にもインスタンス変数にも値がある場合は

元記事を表示

DFS(深さ優先探索)でサイクル検出を考える【python実装】

## 有効サイクルとは

有効サイクルとは、下の図のように、例えばノード 0 から開始し、0 → 1 → 2 → 1 → 2 → 1 … というように 1 と 2 を何度も繰り返し周回するような形です。
s1

## サイクル検出 – 発想1

サイクルを検出するために、次のような手順を踏むことができます。

1. グラフをDFS(深さ優先探索)で探索(ノードのスタート地点は、`for`文を使って、`0`から`n`までを全探索する)
2. 訪れたノードを記録する(`visited[crr] = True`などとしておく)
3. 次の行き先ノードで、すでに訪れていれば(`visited[nxt] = True`)、サイクルと判定します。

この手順を踏めば、大体うまく行きそうです。

**コードのざっくりとした

元記事を表示

Python 初学者が買い物リスト作成アプリを作った(データ収集編:1)

買い物リスト作成アプリを作るにあたって、

様々なレシピの材料と量を大量に集める必要があります。

買い物リスト作成アプリの概要はこちら

https://qiita.com/yuuauuy1/items/5bb4a53ab15bde354297

**★このページは以下項目で構成されています★**

| 項番 | ページ内リンク |
|:—-:|:————-|
| 1 | [データのイメージ](データのイメージ) |
| 2 | [データ収集で学んだこと](データ収集で学んだこと) |
| 3 | [データ取得の流れ](データ取得の流れ) |
| 4 | [楽天レシピのAPIを使って人気レシピを約2000件取得する](楽天レシピのAPIを使って人気レシピを約2000件取得する) |
| 5 | [楽天レシピのレシピカテゴリ一覧を取得する](楽天レシピのレシピカテゴリ一覧を取得する) |
| 6 | [レシピ名・レシピURL・レシピの材料一覧を取得する](レシピ名・レシピURL・レシピの材料一覧を取得する) |

# データのイメージ

Excel をデータ

元記事を表示

DeepLearningコード(Pytorch)

# はじめに
大学院を卒業したら,AIの研究職に…
いかないので,何年後かに見ても思い出せるようにコードを置いておきます.

自分のためなんだからね…!!
ガチで自分のメモ帳的な意味合いが強いので,解説なし&汚ねぇままです.
気が向いたらちゃんとするかもね~

# DNN(Base)
基本的な部分はDNNで書きます.
CNN・RNN・Segmentationはそれぞれ変化がある部分だけ載せます.

必要なライブラリをimportします.
pipなりcondaなりで環境にインストールしておいてください.
これら2つはどっちかに統一してください.混同すると環境壊れるこもがあるらしいっす:cry:
俺はpip派です:v:
~~~
import os
import cv2
import random
import numpy as np

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvi

元記事を表示

【Python】gradioで任意のHTML要素を作りたいときはgr.HTMLではなくgr.Markdownを使う?

# 概要
gradioで独自のhtmlを書きたいときに、gr.HTMLがなぜか機能せず、代わりにgr.Markdownを使ってなんとかしたという備忘録です。
gradioに入門したばかりなので、なにか初歩的な勘違い・ミスをしていたらすみません。

# 環境

macOSで実行し、Chromeで閲覧しました。

“`
% sw_vers
ProductName: macOS
ProductVersion: 12.4
BuildVersion: 21F79
% /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome –version
Google Chrome 109.0.5414.119
% python -V
Python 3.10.2
% pip list | grep gradio
gradio 3.16.2
“`

# 経緯
gradioがとても簡単なのでなるべくgradioでアプリを作りたかったのですが、一部、gradioのコンポーネントでは対応できない

元記事を表示

気象データを Python でスクレイピングする方法(10分値データ)

# きっかけ

気象データを取得したいと思い気象庁のサイトにアクセスしたところ、なぜかエラーになりCSVダウンロードができませんでした。

Web上での表示は問題無くできますので、この表データをCSV化できないかを考えました。

https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

# すでにやられていたこと

調べてみると、気象データのスクレイピングは様々な方がチャレンジされていました。
なかでも、こちらの記事のソースコードをそのまま実行すれば私の環境でも動きました。
非常に助かりました。

https://www.gis-py.com/entry/scraping-weather-data

ちなみに、Pythonでは、BeautifulSoupというライブラリを使うのが定石のようです。
このようなコマンドでインストールできます。

“`pip3 install beautifulsoup4“`

# 今回試したこと

前述のブログでは1時間値を取得していましたので、10分値のデータを取得できるようにコードを変更してみました

元記事を表示

Kaggleで使える技術まとめ

# はじめに
Kaggleで学んだ処理方法をメモしていきます.
みなさんからも是非色々教えて欲しいです.

私が読んだ本をあげておきます.
– Pythonではじめる Kaggleスタートブック
– 前処理大全[データ分析のためのSQL/R/Python実践テクニック]

# 1 共通事項
## 1.1 バギング(bootstrap aggregating)
DeepLearningの研究では,手元にあるデータは全て正解もセットであることが多いと思います.
ですが,Kaggleはtestデータの正解ラベルは公開されていませんし,testデータに対する結果で競います.手元にあるデータをTrain・Validation・testに分けるのがセオリーですが,KaggleではTrain・Validationだけに分けて,できる限り多くのデータを学習させるようにします.その中からTrain・Validationの組み合わせを変更して複数のモデルを作成します.それらのモデル全てでテストデータに対して出力を取り,多数決を取って最終的なモデルの出力とします.
![Bagging.png](https:

元記事を表示

【Python】競プロ用様々な入力の受け取り方まとめ

# はじめに
調べて分かったものもあれば自分で考え出したものもあります。
より短い書き方などあったら教えていただけると幸いです。
新しい入力形式があったら随時追加予定です
# 数値(整数)
## 1文字の整数
### 入力例
“`
2
“`
### 受け取り方
“`py
N = int(input())
“`
## 2文字以上の整数(別変数として受け取る)
### 入力例
“`
2 3
“`
### 受け取り方
“`py
N, M = map(int, input().split())
“`
受け取りたい値の個数に左辺の文字数を合わせる
## 配列1つ
### 入力例
“`
2 3 5
“`
### 受け取り方
“`py
A = [int(x) for x in input().split()]
# or
A = list(map(int, input().split()))
# or
A = [*map(int, input().split())]
“`
## N行2次元配列→1つの変数
### 入力例
“`
1 2 3 4
5 6 7 8
9 10 11

元記事を表示

Pythonチートシート – Tuple型の使い方一覧

仕事や学習の時に役立つちょっとしたチートシートを作ってみることにしました。今回はリスト、ディクショナリーに次いで使うタプルの使い方をまとめてみました。

## タプルについて
listと違い、tupleは読み取り専用のコレクション(イミュータブル)となっています。変更したくない値を格納して参照のみとしたい場合は、tupleを使うのが効果的です。また処理の過程でタプルにしたコレクションをリスト・ディクショナリー等に変えたい時に使います。

### タプルの内容を参照する(スライス、len)
“`python
tuple01 = (1,2,3)
print(tuple01)

# インデックス指定で参照する方法
tuple02 = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
print(tuple02[0])
print(tuple02[2:5])
print(tuple02[-1])
print(tuple02[-5:-1])

# 要素数を取得
print(len(tuple02))
“`
“`python
(1, 2, 3)
10
(30

元記事を表示

Kaggle Titanicタスクに挑戦?(Notebook?)

# はじめに
今回はKaggleのチュートリアル的なコンペであるTitanic-Machine Learning from Disaster へ挑戦した内容をまとめます.
Accuracy80%になると上位2%程度に入るので,そこを目指していたのですがなかなか77~78%から上がらず,結局断念しました:sob:
テーブルデータはまだまだ処理方法が色々あるんだろうなと思ってはいるので,またいい案を思いついたら再度挑戦しようと思います?

なんとNotebookでBronze?を獲得しました?(2023/02/01)
精度は別にだけど,みんなに見てもらえるコードだったみたいです.うれしい…!
本記事でも書いてますが,Kaggeleでもコード公開しているので,見てください?
[Kaggeleのページ](https://www.kaggle.com/code/shiraeharuto/titinic-dataanalyze)

# Import
まずは必要なライブラリのimportです.多っ…
ですが,これは見やすくしたり交差検証したりと色々したくてやっているので,本当に単純なモデルでよけ

元記事を表示

Python3: A4横 の PDF をマージして A3 にする

A4横 のファイルを上下に並べて A3 にします。

## プログラム

“`py:pdf_merge_landscape.py
#! /usr/bin/python
#
# pdf_merge_landscape.py
#
# Feb/01/2023
#
import sys
import PyPDF2
from PyPDF2 import Transformation
#
# ——————————————————————
def show_size_proc(page_obj_in):
print(page_obj_in.artbox.lower_left)
print(page_obj_in.artbox.lower_right)
print(page_obj_in.artbox.upper_left)
print(page_obj_in.artbox.upper_right)
# ——————————————

元記事を表示

【Python】サイコロクラスはどのように実装するのが最適か

読者のあなたならどのような実装を行うかイメージしながら読んでみてほしい。

**条件**
『サイコロを回すクラス』から利用されることを念頭に置く。
このサイコロクラスは、サイコロを渡されると、ランダムに値を選択する処理になっている。

**題**
サイコロクラスはどのように実装を拡張するのが良いか
6面,8面サイコロ…というように作成していくとする。

“`python:サイコロを回すクラスの実装例(サイコロクラスは仕様のみ定義)
import random
import abc

class Dice(abc.ABC):
“””
サイコロの仕様
“””

__slots__ = () # インスタンスの属性追加を不可にする。

@property
@abc.abstractmethod
def numbers(self) -> set:

class DiceRoller:
“””
サイコロを回す役割
ランダムに出目を選択する。
“””
def __i

元記事を表示

python3 sqlite3のデータベースに制約付きの列を追加するためにINSERT文で全データを引っ越す

# やりたいこと
いまあるデータベースに制約付きの新しい列を追加したくなったのだが、なかなか良い方法が見つからなかった。ALTER TABLEを用いれば、一応列の追加はできる。
“`
ALTER TABLE [テーブル名] ADD COLUMN [列名] [データ型];
“`
しかし、どうやら外部キー制約などはつけれないようである。いろいろ調べた結果、まっさらな新データベースを作ってそこに旧データベースのデータをINSERTすればいいんじゃね?ということで、今あるデータベースの情報をもとにINSERT文を構成して、旧データベースのデータを新データベースに引っ越す。

# テストデータベースの作成
とりあえずテスト用のデータベースを作成。parent_id列が追加したい制約付きの列である。
“` python
import sqlite3

bconn = sqlite3.connect(“test_before.db”)
bcursor = bconn.cursor()
bcursor.execute(“CREATE TABLE hoge(\

元記事を表示

Python3 キーボード入力があるまで待って、押されたキーを取得する。

Python3 で、キーボード入力があるまで待って、押されたキーを取得する。
簡単でかつよく使いそうな機能なのに、ネットを探してもなかなか見つからないので書いておきます。

何か画面出力をした後にキーボードが押されるのを待って、押されたらまた次の処理を始めたい場合とか、逐次的に、キーボード入力を見たいときってありますよね。
そういう時は、getkeyモジュールのgetkey関数を使いましょう。
しかし、あくまでこの関数は、Terminal入力を受け付けているときのみで、例えばpygameなどを使っていて、別のウィンドウがアクティブになっている時は使えません。

# インストール

“`
$ python3 -m pip install getkey
“`

# コード

“`kb.py
#!/usr/bin/python3
from getkey import getkey,keys

print(“Hit any key”)

key=getkey() # wait key until keyboard is hit and input with no echoes

if

元記事を表示

Pythonチートシート – Dict型の使い方一覧

## Pythonのディクショナリーについて¶
dict型のデータは、一意のキーと値のペアを使って管理される型です。
自然言語処理を行う際や、言語を翻訳したいときに役立ちます。

言語によってはディクショナリーはハッシュ・連想配列と呼ばれます。 dict型のデータ構造は、ハッシュ表という数値型のテーブルをキー・値と対応させるという 内部構造となっています。そのためdict型のデータはハッシュアブルな型を用いなければならりません。

Pythonではint, str, bytes, tuple, frozenset等がハッシュアブルな型となっていて、通常、dict型のキーはintかstr型とします。

### ディクショナリーの内容を参照する

“`python
d = {“apple”:”りんご”, “orange”:”みかん”, “melon”:”メロン”}

d[“apple”] = “アップル”
d[“strawberry”] = “いちご”

#setdefaultメソッドはキーが存在しない場合のみ値を設定するのに用いる
d.setdefault(“apple”,”Go

元記事を表示

OTHERカテゴリの最新記事