- 1. pythonの辞書型メモ
- 2. 崖に落ちるか判定
- 3. 終了判定 2 Python3編
- 4. LeetCode日記(Day 2)
- 5. HuggingFaceの読込速度の比較(ローカルパス、キャッシュ、pickle)
- 6. PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)
- 7. 2023年のQiita人気タグをアニメーションで振り返る
- 8. 【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした
- 9. 九九の一覧表作成
- 10. [Python][Julia]Project euler10 (プロジェクトオイラー10)
- 11. pandas.DataFrameのループ速度比較(iterrows vs apply)
- 12. pythonのECDSA署名鍵読み込みが意外と雑だった
- 13. 数値のスペース埋め(入力でデータの数とスペースで何桁の数にするか指定する)
- 14. [Python][Julia]Project euler9 (プロジェクトオイラー9)
- 15. Python3: SMTP over SSL でメールの送信
- 16. 異様な書き方でプログラミング
- 17. 最もよく起こりうることを先に判定せよ
- 18. [Python][Julia]Project euler8 (プロジェクトオイラー8)
- 19. 【macOS】asdf+PoetryでPythonの開発環境を構築した
- 20. Python3のdequeの実装を調べる:
pythonの辞書型メモ
## 元素記号と元素名(英語)
+ 原子番号順
+ 希ガスは除く
+ 原子番号53番まで“`python
elements = {
“H”: “Hydrogen”,
“Li”: “Lithium”,
“Be”: “Beryllium”,
“B”: “Boron”,
“C”: “Carbon”,
“N”: “Nitrogen”,
“O”: “Oxygen”,
“F”: “Fluorine”,
“Na”: “Sodium”,
“Mg”: “Magnesium”,
“Al”: “Aluminium”,
“Si”: “Silicon”,
“P”: “Phosphorus”,
“S”: “Sulfur”,
“Cl”: “Chlorine”,
“K”: “Potassium”,
“Ca”: “Calcium”,
“Sc”: “Scandium”,
“Ti”: “Titanium”,
“V”: “Vanadium”,
“Cr”
崖に落ちるか判定
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step7
小数点があるということで、int型でなくてfloat型にしてみました。
でも解答だと普通にintでもよかったみたいです。
まあ、仕様を見ると、小数点のある数字を混ぜたときにfloat型になってしまうようなので
問題ないのかな。“`py
N,K,T = map(float,input().split())
X = T + 0.1if N * K < X: print('YES') else: print('NO') ``` PHPだとこうですね。 さらに変数を使わないようにしました 行数が減りました ```php
終了判定 2 Python3編
https://paiza.jp/works/mondai/conditions_branch/conditions_branch__complex_step5
さて久しぶりにPythonから。
ここでwhileを使いました。たぶんpythonでPaizaやり始めてから初めてじゃないかな。“`py
N,K = map(int,input().split())
cnt = 0
while N < K: cnt += 1 N = N * 2 print(cnt) ``` ところでなんで、+=は知ってるのに、*=はなぜしなかったの?と自分で自分を突っ込んでしまった。いやおっしゃるとおり。 こうですね。 ```py N,K = map(int,input().split()) cnt = 0 while N < K: cnt += 1 N *= 2 print(cnt) ``` とりあえずphpでもやっておきます。 ```php5
LeetCode日記(Day 2)
# 初めに
前回に続き,LeetCodeの解答と解説をまとめていこうと思います~~## LeetCode(Palindrome Number)
>Given an integer x, return true if x is a
palindrome, and false otherwise.凄くシンプルな問題ですね.
これは「回文ならTrueを返してね.そうでなければFalseでお願い」ということですね.
じゃあ,さっそく解いてみましょう~#解答・解説
“`python
def isPalindrome(self, x: int) -> bool:
x_str = str(x)x_str_reversed = x_str[::-1]
if x_str == x_str_reversed:
return True
else:
return False
“`これは一瞬で書けますね!
与えられた数字を文字列として置き換えて,反転させたも
HuggingFaceの読込速度の比較(ローカルパス、キャッシュ、pickle)
# 概要
HuggingFaceのモデルのロード速度を3つの方法で比較しました。* ローカルパス:model_nameにダウンロードしたものモデルフォルダのパス(e.g. “./mulitlingual-e5-large”)を指定してロード
* キャッシュ:model_nameにURLのモデル名(e.g. “intfloat/multilingual-e5-large”)を指定してキャッシュ済みのモデルをロードする
* pickle: pickleでダンプしたインスタンスをロード結果としてはpickleが一番早かったです。ローカルパスとキャッシュは同じくらいでした。
# 背景
HuggingFaceのモデルをなるべく早くロードできる方法が何か知りたくて調べました。
# 環境
* M1 MacBookAirのメモリ16GB、SSD 1TB# 実装
`intfloat/multilingual-e5-large`の読込み速度を比較します。2GB以上あるので、より軽量なモデルで試したい場合は適宜、変更ください。## ローカルパス
huggingface_hubを使ってモデル
PHPとPythonの比較勉強ー複数行にわたる入力 (paizaランク D 相当)
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_step3
PHPを仕事であんまり使わなくなって今Pythonをやっているんですよね。
で、やらなくなっているとなんというか腕が鈍ってしまったりしまして。
それだとだめだなと思ったので今年から1日1回はPHPも解くようにしました。ひとまずPythonで書いてみます
“`py
n = int(input())
for _ in range(n):
print(input())
“`
簡単ですね。
では次にPHP“`php
“`
一応正解はしたのですが。
fgets(STDIN)で取得したものはtrimしないといけないみたいです。
なんでなのか調べたら、どうやら、入力されたときの改行を除去するため、という
意味があるそうです。
問題
2023年のQiita人気タグをアニメーションで振り返る
## 結果から
![output (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/4d013a9e-6272-b2de-0e91-04cbb410e77b.gif)## はじめに
つい先週に、ワードクラウドの時系列変化をアニメーション化する[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)というライブラリが出ましたhttps://github.com/konbraphat51/AnimatedWordCloud
こちらも読むべき: [【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした](https://qiita.com/konbraphat51/items/1d72404203e4c63d8cda)
[ミーハーの王、ミーハーキング](https://qiita.com/uts1_6/items/11e34
【Python OSSライブラリ製作】話題の時系列変化を可視化する”アニメ化”ワードクラウドを作成するライブラリをリリースした
## 作ったもの
イーロンマスクのツイートにおける頻出単語の時系列変化を可視化したgif画像です。
![image.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602537/cc0b3710-904e-9d3c-b39f-ad7b93fad66a.gif)“`
pip install AnimatedWordCloudTimelapse
“`でインストールして、
“`python
from AnimatedWordCloud import animateanimate(data)
“`と記述するだけで、上記のgif画像が作成できる`Python`ライブラリ[AnimatedWordCloud](https://github.com/konbraphat51/AnimatedWordCloud)を作成しました。
:::note
`GitHub`レポジトリ(スター⭐くれると泣きながら喜びます、本当に):https://github.com/konbraphat51/Anima
九九の一覧表作成
九九の一覧表を作りました。
ルール
①各段の最後の回答以外、「 | 」で区切る
②回答はスペース埋めで2桁にする
③各段の区切りを「=」で各行の文字数に合わせる実装したコードです。
“`python3
#####################################
### 九九の一覧表作成
######################################各段の変数定義
startn = 1
endn = 10
#桁数変数の定義
keta = 2
# スペース関数
def space1():
print()# 罫線関数
def div1():
print(“=” * (keta*(endn – startn) + 3 * (endn – startn -1)))for i in range(startn,endn):
for j in range(startn,endn):
ans = i * j
if j == 9:
print(f”{ans:>{keta}}”,end=””)
els
[Python][Julia]Project euler10 (プロジェクトオイラー10)
#### Project euler Ploblem 7 (プロジェクトオイラー7)
[Summation of Primes](https://projecteuler.net/problem=10)備忘のために残しておく。
## 問題
#### 問題文 (意訳)
10より下の素数の和は 2 + 3 + 5 + 7 = 17。
2,000,000より下の全ての素数の和を求めよ。#### 原文
The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.## 解答
#### 答え
142913828922#### 解答の方針
エラトステネスのふるいを使って素数のリストを作成し、合計する。
[[Python][Julia]Project euler7 (プロジェクトオイラー7)](https://qiita.com/fujihop/items/776d1135d52944529941)
のコードを参考に改変し
pandas.DataFrameのループ速度比較(iterrows vs apply)
# 概要
pandas.DataFrameで行ごとの処理をする場合の、iterrowsとapplyの速度比較を行ったコードのメモです。iterrowsのほうが遅いという話はよく聞きますが、実際どの程度遅いのか、実感を掴むためにやりました。新規性は特にありません。# 実装
wikipediaの記事を文単位で分割して新たなDataFrameをつくるというタスクで計測します。
列名の変更など一部無駄な処理があるのは、他のプロジェクトのためのコードを流用しているためです。
コードはGPT4の力を借りて作りました。wikipediaの記事をhuggingfaceからダウンロードします。
“`Python
from datasets import load_dataset# URL of the dataset
dataset_url = “izumi-lab/wikipedia-ja-20230720”# Load the dataset
dataset = load_dataset(dataset_url)# To view basic information or m
pythonのECDSA署名鍵読み込みが意外と雑だった
# はじめに
いきなりですが, [ECDSA](https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9ADSA) という楕円曲線を使った署名技術が存在します[^2]. そして,
“`
$ python3 pip install ecdsa
“`で導入されるライブラリを使うと, pythonでECDSAの鍵生成や署名をはじめとして, DER/PEM形式での鍵のインポートやエクスポートも可能となります.
今回いろいろあってこのあたりの構造を調べていたら, タイトルの通り署名鍵インポートが適当だったことが判明したので, 自分への備忘録も兼ねてこれを記している次第です.
なお, はじめに断っておくとこれはバグではなく, ただ単に(それを承知の上で)実装されていないだけです.
# 環境
“`
$ python3 –version
Python 3.10.12$ python3 -m pip list | grep ecdsa
ecdsa
数値のスペース埋め(入力でデータの数とスペースで何桁の数にするか指定する)
***数値のスペース埋め***(入力でデータの数とスペースで何桁の数にするか指定する)
のプログラミング課題を解きました。“`Python3
#入力するデータ数とスペース埋めで何桁で出力するか入力する
data1 = input(“数値のデータの数とスペース埋めで何桁の数に指定するかスペース区切りで入力してください”)
array1 = data1.split(‘ ‘)
N = int(array1[0])
keta = int(array1[1])
for i in range(0,N):
num = input()
ans = “{: >{}}”.format(num,keta)
print(ans)
“`
[Python][Julia]Project euler9 (プロジェクトオイラー9)
#### Project euler Ploblem 9 (プロジェクトオイラー9)
[Special Pythagorean Triplet](https://projecteuler.net/problem=9)備忘のために残しておく。
## 問題
#### 問題文 (意訳)
ピタゴラスの三つ組数は 3つの自然数のセットであり、a
Python3: SMTP over SSL でメールの送信
こちらのプログラムを改造しました。
[Python3: Starttls でメールの送信](https://qiita.com/ekzemplaro/items/c248b52a6f36947af080)“`py:mail_send.py
#! /usr/bin/python
#
# mail_send.py
#
# Jan/08/2024
# ——————————————————————–
import os
import sys
import socket
from dotenv import load_dotenv
import email
from email.mime.text import MIMEText
from email.utils import formatdate
# ——————————————————————–
from send_smtp_ssl import
異様な書き方でプログラミング
異様な書き方でコラッツの問題を解くプログラムを書いてみる。
– `式1 if 条件 else 式2` 構文を使う。
– `式1`,`式2`は複数の式から構成されてもよい。ただし,
– 全体を `( )` で囲む
– それぞれの式は `,` で区切る
– 関数の引用も式である
– 代入文の場合はいわゆるセイウチ演算子 `:=` を使う
– 実行される複数の式の結果をタプルとしてセイウチ演算子で捕捉しておくこともできる“`python
n = 976
oddcount, evencount = 0, 0
while n != 1:
(junk1 := (print(‘n =’, n, ‘is even. =>’, n//2), n := n//2, evencount := evencount + 1)) if n % 2 == 0 else (junk2 := (print(‘n =’, n, ‘is odd. =>’, n*3 + 1), n := n*3 + 1, oddcount := oddcount + 1))
prin
最もよく起こりうることを先に判定せよ
“`Python
if condition:
continue
else:
something()
“`の意味と,「最もよく起こりうることを先に判定せよ」というのは違うのではないか。
確かに以下のような場合には `i < 0.8` を先に判定するほうが良いが,それとこれとは違う。 ```python #--- import numpy as np from time import time n = 100000000 x = np.random.rand(n) s = time() s1, s2, s3 = 0, 0, 0 for i in x: if i < 0.8: s1 += 1 elif i < 0.9: s2 += 1 else: s3 += 1 print(s1, s2, s3, time() - s) ``` 79997428 9999472 10003100 10.772604942321777 ```python s = ti
[Python][Julia]Project euler8 (プロジェクトオイラー8)
#### Project euler Ploblem 8 (プロジェクトオイラー8)
[Largest Product in a Series](https://projecteuler.net/problem=8)備忘のために残しておく。
## 問題
#### 問題文 (意訳)
1000個の数値がある、4個の隣り合う数値で最大の積は9×9×8×9=5832
13個の隣り合う数値の最大の積は?#### 原文
The four adjacent digits in the 1000-digit number that have the greatest product are 9×9×8×9=5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
125406987471585238630507156932909632
【macOS】asdf+PoetryでPythonの開発環境を構築した
## 背景
先日、Anaconda3を使いたくなくなって、アンインストールした。
後に、asdfとPoetryでPythonの開発環境を再構築したので、メモを残しておく。https://qiita.com/TIshow/items/2dbabe857343a79cf3b0
## やること
asdfとPoetryでPythonの開発環境を構築する
## 手順
– Poetryとは何か?
– asdfのインストール
– Python プラグインの追加
– Pythonのインストール
– Poetryのインストール
– 仮想環境の構築## Poetryとは何か?
Poetryは、Pythonのパッケージ管理ツールである。Pythonには、pip や pipenv など、さまざまなパッケージ管理ツールが存在するが、Poetryもその一つ。
Poetryの目的は、パッケージの依存関係を簡単かつ効率的に管理することにある。### Poetryの主な機能
Poetryは以下のような強力な機能を提供している・– パッケージの管理:
Pythonプロジェクトに必要なライブラリやツ
Python3のdequeの実装を調べる:
https://atcoder.jp/contests/abc335/tasks/abc335_c
この問題で、Pythonのdequeのindexed参照が$O(N)$なんだ!というポストをみかけました。Pythonのdequeの実装はどうなっているのでしょうか?以下はPython-3.8.10.tar.gzのコードから参照します。
# 冒頭のコメントを読む(日本語のみ)
– dequeの特徴はappendやpopにおいて操作するデータ以外の位置を移動させないことだ。加えて、(全体に対する)reallocを発生させない
– Pythonのdequeは固定ブロックサイズのダブルリンクドリストに格納される。これは一般のリンクドリストは1つの要素ごとにnxt/prvをもったりして非効率的だから。また、連続アクセスのキャッシュ局所性への対応も実現する。# ダブルリンクドリストのイメージとdequeの構造体の実装
以下はイメージです。各要素は前後の要素へのポインタを持ちます。各要素は要素のデータを持ちます。
![image.png](https://qiita-image-store