- 1. python3 mapとlambdaとは?
- 2. python3 イテレータとジェネレータとは?
- 3. Python環境構築 (venv, Amazon Linux 2)
- 4. python 好きな文字で囲む(記録)
- 5. Pythonのdatetimeモジュールで日時を取得するサンプル
- 6. 言語処理100本ノック 2020をやってみる 第三章:正規表現 後編
- 7. python3 辞書型
- 8. matplotlibで多軸(2軸~4軸)グラフ作成
- 9. python3 sort 昇順・降順 (記録)
- 10. PyUSB USBError: [Errno 16] Resource busy への対処療法かもしれないメモ
- 11. Python : 指定した順序で辞書を並べ替える
- 12. Pythonで強力なパスワードを作る
- 13. 【Python】emojiモジュールについて
- 14. 1から123の約数の和 python
- 15. leetcord python3 9. Palindrome Number(回文数)
- 16. Python で半角スペース区切りの整数を受け取るときの典型的な書き方
- 17. python3 多重ループ(記録)
- 18. pythonフラグ管理 (記録)
- 19. OpenCV(python)をLambdaで動かす
- 20. LeetCord(記録)python3
python3 mapとlambdaとは?
# mapとlambda
mapとはイテレータの要素を加工するためのもの“`
def triple(n):
return n * 3print(list(map(triple,[1, 2, 3])))
a = [10, 20, 30]
“`
mapでリスト(イテレータ)を呼ぶとジェネレータになる。そのため結果をリストに変換する必要がある。“`
print(list(map(triple,a)))
“`
###lambdaは上記の計算(triple)関数を書かなくても一行で実行できるものをいう。“`
print(list(map(lambda n: n*3, a)))
“`
python3 イテレータとジェネレータとは?
###イテレータとは、
連続するデータを操作するオブジェクト(リスト・集合・タプル)“`
scores = [10, 20, 30, 40]
it = iter(scores)
print(next(it))
print(next(it))
print(next(it))
print(“hello”)
print(next(it))
“`
上と同じ意味“`
for score in scores:
print(score)
“`
##ジェネレータ
リストから変換するのではなくて 0 からイテレータを作ることもできます。0から連続するデータを操作するオブジェクト作ることをジェネレータという。
無限ループを while True:
次の要素を引っ張ってくる yield i * 2 という命令 ジェネレータの重要なポイント
yieldをnextと連動させて取ってくることができる。
イテレータを作るこうした関数をジェネレータと呼ぶ“`
def get_infinite():
i = 0
while True:
yield i * 2
i +=
Python環境構築 (venv, Amazon Linux 2)
# ■ 参考
https://docs.python.org/ja/3/tutorial/venv.htmlhttps://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/
# ■ Python3.8のインストール
普通にyumインストールすると3.6がインストールされてしまうため、 `amazon-linux-extras` を利用してインストールします。
`amazon-linux-extras` はAmazon Linux用のリポジトリで、より新しいバージョンのライブラリを利用することができます。“`bash
# amazon-linux-extrasパッケージがインストールされていない場合はyumでインストール
sudo yum install -y amazon-linux-extras# python3.8をインストール
sudo amazon-linux-extras install -y python3.8
“`# ■ ve
python 好きな文字で囲む(記録)
### 文字列を枠で囲む装飾をするプログラム
#### 例
“`
=======
=======
“`
↑のようになるプログラム“`
input_text = input()
str_len = len(input_text)
print(“=”*(str_len +2))
print(“<"+input_text+">“)
print(“=”*(str_len +2))# 結果
# =======
#
# =======
“`
Pythonのdatetimeモジュールで日時を取得するサンプル
# Pythonのdatetimeモジュールで日時を取得するサンプル
## はじめに
コードを書いていて日時を使用する場面が出てくるかと思います。
そのときに私がほしいと思う、フォーマットと表示のサンプルを書きました。
解説はしていなくて、フォーマットと表示の羅列のみです。## 環境
– windows 10
– Python 3.9.1
– datetime## コード
“`python
import datetimeNOW = datetime.datetime.now()
print(NOW)
print(type(NOW))
# 2021-09-06 18:19:37.079126
#print(NOW.year)
print(type(NOW).year)
# 2021
#print(NOW.month)
print(type(NOW.month))
# 9
#pri
言語処理100本ノック 2020をやってみる 第三章:正規表現 後編
#目的
下記のウェブサイトの言語処理100本ノックを行う.https://nlp100.github.io/ja/
第一章
https://qiita.com/t-baba-11/items/f230136058a695c7c7d1
第三章 前編
https://qiita.com/t-baba-11/items/1e7b69545a2805a88527
#第3章:正規表現
プログラミング言語はPythonを用いる.
jupyter notebookを使用しているので,出力にprint文が必要な場合は適宜追加する.###25. テンプレートの抽出
テンプレートは,タイトル名称と内容が’=’で結ばれており,’|’で区切られている.
その正規表現を作り’=’の前後をタプル形式で出力.
辞書型に変更するためOrderedDict関数を使用.“`.py
from collections import OrderedDict
OrderedDict(re.findall(r’\|(.+?)\s=\s*(.+)’, text[0]))
>>>OrderedDict(
python3 辞書型
##辞書の基本
“`
n = int(input())zaisan = {}
for i in range(n):
[s,a] = input().split()
zaisan[s]= aS = input()
print(zaisan[S])
print(zaisan)
“`
・zaisan = {} とすることで辞書を初期化して 変数 zaisan に代入できます。
・zaisan に s に対応する値 a を追加するには zaisan[s] = a とします。(重要)
・zaisan における S に対応する値にアクセスするには zaisan[S] とします。入力例1
2
Kirishima 1
Kyoko 2
Kirishima出力例1
1
“`
n = int(input())
dmg = {}for i in range(n):
s=input()
dmg[s]=0
#kirishima:0,kyoko:0を作るm = int(input())
for i in range(m
matplotlibで多軸(2軸~4軸)グラフ作成
###はじめに
COVID-19の感染者の推移グラフはNHKやその他のサイトで参照できますが単一グラフです。このようなグラフは時間軸であるx軸に対して、y軸として「感染者数」、「死者数」、「要入院治療者数」、「重症者数」等を同時にグラフ化すると傾向がわかりやすくなります。
そこで、そのようなグラフをmatplotlibで作成するため、多軸(2軸~4軸)グラフ作成のプロトタイプを作成してみました。
その際、「フォントサイズ」、「多軸の数」、「多軸のスケール幅」に応じて多軸の幅をプログラムで調整しているのがこのプログラムの肝です。###プログラム
プログラムは以下の通りです。“`python
# matplotlib 多軸(2軸~4軸)グラフ
import matplotlib as mpl
import matplotlib.pyplot as plt
import japanize_matplotlibdef main():
x = [1, 2, 3, 4] # ※1
y = [[2, 3, 1, 6],
[350, 200, 5
python3 sort 昇順・降順 (記録)
#重要なところは、a.sort(reverse=True)の箇所
# 昇順
“`python
n = int(input())
a = [0]*nfor i in range(n):
a[i] = int(input())a.sort()
for i in range(n):
print(a[i])
“`#降順
“`python
n = int(input())a = [0]*n
for i in range(n):
a[i] = int(input())a.sort(reverse=True)
for i in range(n):
print(a[i])
“`https://note.nkmk.me/python-list-sort-sorted/
#辞書型のソート
“`
n = int(input())
ab = [None]*nfor i in range(n):
[a,b] = input().split()
a = int(a)
b = int(b)
ab[i
PyUSB USBError: [Errno 16] Resource busy への対処療法かもしれないメモ
# 結論
入出力実行(USBデバイスに制御データ・データを送る)前にis_kernel_driver_activeがTrueならdetach_kernel_driverする。
入出力実行後に、usb.util.dispose_resourcesしてからattach_kernel_driver
例。これは手元にあるデバイス用なので、各自適宜変更してください。
“` python3
if dev.is_kernel_driver_active(intf.bInterfaceNumber):
dev.detach_kernel_driver(intf.bInterfaceNumber)
writes = dev.ctrl_transfer(bmRequestType=0x21,
bRequest=0x09,
wValue=0x0200,
data_or_wLength=[1 << 6]) data = dev.re
Python : 指定した順序で辞書を並べ替える
特定の順序で辞書のキーを並べ替える方法が調べても出てこなくて、ようやく見つけたので記事を書こうと思いました。調べ方が悪かったのかもしれないですが、、、
## 早速並べ替える
“`Python
d = {‘B’: 5, ‘C’: 3, ‘A’: 2, ‘D’: 4, ‘E’: 1}
“`
このdictを“`Python
[‘A’, ‘C’, ‘D’, ‘E’, ‘B’]
“`の順に並べ替えたい場合
“`Python
d = {‘B’: 5, ‘C’: 3, ‘A’: 2, ‘D’: 4, ‘E’: 1}
order = [‘A’, ‘C’, ‘D’, ‘E’, ‘B’]
sorted(d.items(), key=lambda i:order.index(i[0]))
-> [(‘A’, 2), (‘C’, 3), (‘D’, 4), (‘E’, 1), (‘B’, 5)]“`
参考:[Custom Sorting Python Dictionary](https://stackoverflow.com/questions/12031482/custom-
Pythonで強力なパスワードを作る
Pythonで強力なパスワードを作る方法を簡単に解説した。
パスワードの文字数を入力すれば複雑な文字列を生成できる関数を作って実装する。自力でランダムに文字を組み合わせてパスワードを生成することもできるが、機会で無作為に作成したほうがはるかに効率的だろう。
# 半角英数字だけのパスワードを生成
Pythonなら次の10行近くのコードだけで複雑なパスワードを簡単に生成できる。
“`python
import secrets
import stringdef get_random_password_string(length):
pass_chars = string.ascii_letters + string.digits
password = ”.join(secrets.choice(pass_chars) for x in range(length))
return passwordprint(get_random_password_string(10))
print(get_random_password_string(13))
p
【Python】emojiモジュールについて
##インストール
“`
pip install emoji
“`##動作環境
“`
python3 –version
# Python 3.9.6pip3 show emoji
# Version: 1.4.2
“`##絵文字の正規表現の取得 – get_emoji_regexp()
get_emoji_regexp()メソッドで絵文字判別のための正規表現を取得することができます。
これを利用することで文章中の?みたいな絵文字を消し去ることができます。“`python
import re
import emojifaces = ‘???ლ(´ڡ`ლ)???( ◜ω◝ )???’
print(re.sub(emoji.get_emoji_regexp(), ”, faces))# ლ(´ڡ`ლ)( ◜ω◝ )
“`YouTubeやTwitterなどから取得してきたテキストを色々いじくる前の処理として使うことができます。
##文字列内の絵文字の個数をカウント – emoji_count()
“`python
print(emoji.
1から123の約数の和 python
####numを1から36までの自然数で割り算し、余りが0の場合に出力していきます。
“`
num = 123
a = []
for i in range(1, num+1): #1~123まで
if num % i == 0:
a.append(i) #配列に入れるb = sum(a) #配列の総和
print(b)
“`
leetcord python3 9. Palindrome Number(回文数)
###整数xが与えられた場合、xが回文整数の場合はtrueを返します。という問題
・回文数 「しんぶんし」のようにさかさに読んでも同じ文になる文を回分といいますが、12321のように逆さから読んでも同じ数になる数を回文数といいます。
####問題(翻訳)
整数は、前方と後方で同じように読み取られる場合、回文です。 たとえば、121は回文ですが、123はそうではありません。
例1:入力:x = 121
出力:true
例2:入力:x = -121
出力:false
説明:左から右に、-121と表示されます。 右から左に、121-になります。 したがって、それは回文ではありません。
例3:入力:x = 10
出力:false
説明:01を右から左に読み取ります。 したがって、それは回文ではありません。
例4:入力:x = -101
出力:false制約:
-231 <= x <= 231-1 ####回答 文字を反対にしてもマイナスじゃないかを判定するということ。 一番重要なのは、[::-1]で後ろからに変換してくれる。 ``` class Soluti
Python で半角スペース区切りの整数を受け取るときの典型的な書き方
#### Python で半角スペース区切りの整数を受け取るときの典型的な書き方
“`
N, M, K = map(int, input().split())
“`
・Python ではいくつかの変数を、リストを使ってまとめて初期化することができます。今回のように N, M, K = hoge と書くと、代入されるのが長さ 3 のリストであるとき、そのリストの 0, 1, 2 番目の要素がそれぞれ N, M, K に代入されます。・N, M, K = map(int, input().split()) は Python で半角スペース区切りの整数を受け取るときの典型的な書き方のひとつです。右辺では input().split() の各要素に int関数 を適用しています。
“`
N, M, K = map(int, input().split())for i in range(N):
a = [int(j) for j in input().split()]
ans = 0
for j in range(M):
if a[j]
python3 多重ループ(記録)
##多重ループ
Cの配列の中からsの中で該当するものを判定する。
今回はforの中にforがあることと、inで文字列を確認することがポイント。“`
m = int(input())#[“”]文字列の配列を作成するため
c = [“”]*mfor i in range(m):
c[i] = input()n = int(input())
s = [“”]*n
for l in range(n):
s[l] = input()for i in range(m):
for l in range(n):
if c[i] in s[l]:
print(“YES”)
else:
print(“NO”)
“`入力例2
2
c
d
2
cat
dog出力例2
YES
NO
NO
pythonフラグ管理 (記録)
##Python3の場合
“`python
n = int(input())flag = False
for i in range(n):
a = int(input())
if a == 7:
flag = True
“`
まずは flag を False にしておき、a_1, …, a_n の中に 7 が見つかったときにはこれに True を再代入します。こうすることで、7 がひとつでもあった場合には最終的に flag の値は True となり、そうでない場合には False となります。“`
if flag:
print(“YES”)
else:
print(“NO”)
“`flag の値に応じて条件分岐し、flag が True のときには YES を、そうでないときには NO を出力するようにすれば OK です。なお、if文の条件文はそのブール値だけが見られるので、if flag == True: などとせずとも、 if flag: と書けば「flag が True のとき」という意味になります。
OpenCV(python)をLambdaで動かす
すでに他の人が記事で書いているのですが、そもそもSAMについてよくわかっていなかったので自分の備忘録としてリンク集貼っておきます。
https://note.com/rooxim/n/n8631eb634167
AWSのインストール系リンク
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html
そもそもSAM使ってDeployすることを丁寧に書いてくれている記事
http://hack-note.com/infra/aws-sam-lambda-deploy/
LeetCord(記録)python3
##1. Two Sum
“`
nums = [2,7,11,15]
target = 9
result = []
for i in range(len(nums)):
for j in range(i,len(nums)):
if nums[i] + nums[j] == target:
result = [i, j]
break;print(result)
“`##7. Reverse Integer
符号付き32ビット整数xが与えられた場合、桁を逆にしてxを返します。 xを逆にすると、値が符号付き32ビット整数の範囲[-231、231-1]の外に出る場合は、0を返します。環境では64ビット整数(符号付きまたは符号なし)を格納できないと想定します。
“`python
x = 123s = (x > 0) – (x < 0) #1(true)-0(false) r = int(str(x*s)[::-1]) y = s*r * (r < 2**31) #321*1(true) print (s)#1 print (r)#