パンダの記録帳

自分が学んだことをこのブログで記録していきます。 今のメインは、"Android studio"、"Python"、"光ファイバ"、”電気”など

Python 正規表現

Python正規表現を使うときの自分用のまとめ

 

正規表現を使用して見つかったパターンをマッチすると言う。

# !/user/bin/env python



import re  #importする。





def main():



    pattern = r'a'  # 見つけたい文字。 ''の前にrをつけることで「」をそのまま使える。

    text = 'abcda'



    m = re.match(pattern, text)  # re.match(見つけたい文字, 検索する文字列)

                                 # 文字列の先頭で正規表現とマッチの判定



    n = re.search(pattern, text)  # re.search(見つけたい文字, 検索する文字列)

                                  # 見つけたい文字がどこかにあれば返す



    l = re.findall(pattern, text)  # re.findall(見つけたい文字, 検索する文字列)

                                   # マッチした部分文字列をすべて探し、リストで返す。   



    print(m)  # <_sre.SRE_Match object; span=(0, 1), match='a'>

    print(n)  # <_sre.SRE_Match object; span=(0, 1), match='a'>

    print(l)  # ['a', 'a']



    # search()関数 ※マッチが複数あっても最初の箇所だけ返す。



    print(n.group())  # a  マッチした文字列を返す

    print(n.start())  # 0  マッチの開始位置

    print(n.end())    # 1  マッチの終了位置

    print(n.span())   # (0, 1)  マッチの位置





if __name__ == '__main__':

    main()

Python matplotlibを使ってグラフを描く。

matplotlibを使うことで、Pythonでグラフを描くことでできる。画像ファイルだけでなく、gifファイルなどのアニメーションの作成も可能。

 

1.importの仕方

 

import matplotlib.pyplot

# または、

import matplotlib.pyplot as plt

 下のimport方法が文字の入力が少なくなって楽。

 

2.簡単なグラフの表示方法

 

# !/user/bin/env python

import matplotlib.pyplot as plt


def main():

    # y = x^2をグラフにする。

    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  # x座標
    y = [] # y座標

    for i in x:
        y.append(i**2)

    plt.plot(x, y) #xとyのデータを渡す
    plt.show() # グラフの表示



if __name__ == '__main__':
    main()

 表示されるグラフ

二次関数の式ではあるが、yに与えるxの座標が飛び飛びであるため、曲線ではなくなっている。

numpyなどを使って配列を作るとより滑らかなものになる。

 

plot()を使って、座標の情報を送り、show()を使ってグラフを表示する。

 

 

 

詳しくは、ここのブログを参照してください。

 

bicycle1885.hatenablog.com

 

Python importの方法

numpyをインポートしてみます。インポートする方法はいくつかあります。

 

 すべてのコードの出力結果は、

[1 2 3 4 5 6 7 8 9]

です。

1.import numpy

 

# !/user/bin/env python

import numpy


def main():
    a = numpy.arange(1,10,1)
    print(a)


if __name__ == '__main__':
    main()

 この方法は、普通のインポートの方法です。

a = numpy.arange(1,10,1) のように使います。

 

2.import numpy as np

 

# !/user/bin/env python

import numpy as np


def main():
    a = np.arange(1,10,1)
    print(a)


if __name__ == '__main__':
    main()

この方が文字入力を省略できます。

 a = np.arange(1,10,1) のように使います。

 

3.from numpy import arange 

 

# !/user/bin/env python

from numpy import arange


def main():
    a = arange(1,10,1)
    print(a)


if __name__ == '__main__':
    main()

 import する関数を選ぶ使い方です。

この場合、arangeを利用することができます。

この書き方をすると、numpy.arange()やnp.arange()のように入力する必要がなく、文字の入力が楽になります。

また、’math’をimport し、sin()とcos()を使いたいとき、

from math import sin, cos

のように複数の関数をimportできます。

ワイドカード "*" を使って、

from math import *

としてすべての関数を利用できます。

他のライブラリと関数が被る場合があるので利用する場合は注意が必要です。

 

 

importする方法は、複数あるため使い分けが大切です。

Python listの要素の型を変える

・内包表記を使う

list = [1, 2, 3, 4, 5]

a = [str(i) for i in list]

print(a)
#['1', '2', '3', '4', '5']

 

・関数を作成する

 

def change_str_to_int(s):
    try:
        return int(s)
    except Exception:
        return s


list = ["1", "2", "3", "4", "5", "a"]


#やり方1
list_change1 = []

for i in range(len(list)):
    
    list_change1.append(change_str_to_int(list[i]))


print(list_change1)
#[1, 2, 3, 4, 5, 'a']


#やり方2
list_change2 = [change_str_to_int(e) for e in list]

print(list_change2)
#[1, 2, 3, 4, 5, 'a']

 

参考サイト

Python3で文字列リストの変換をmapでしようとしたらハマった件について - どこかに向かうらしい話

python 文字と数字 の混在したソートについて.A=['1','2','3','4','5... - Yahoo!知恵袋

Python リスト ソート 並べ替え

・list 作り方

 

list = [1,2,3,4,5,6]
print(list)
#[1, 2, 3, 4, 5, 6]

 

・要素追加

list = [10,2,9,4,5,6]

print(list)

list.sort()

print(list)

#[10, 2, 9, 4, 5, 6]
#[2, 4, 5, 6, 9, 10]

 

list = [10,2,9,4,5,6]

print(list)

list_2 = sorted(list)

print(list_2)

#[10, 2, 9, 4, 5, 6]

 ・降順でソート

list = [10,2,9,4,5,6]

list.sort()

print(list)

list.sort(reverse = True)

print(list)


#[2, 4, 5, 6, 9, 10]
#[10, 9, 6, 5, 4, 2]

 sort()の中で、reverse=Trueにする。

 

・多次元listをソートする

 

list = [[2, 2], [3, 1], [1, 4], [4, 3]]

list.sort()

print(list)
#[[1, 4], [2, 2], [3, 1], [4, 3]]

list.sort(key=lambda x: x[0])

print(list)
#[[1, 4], [2, 2], [3, 1], [4, 3]]

list.sort(key=lambda x: x[1])

print(list)
#[[3, 1], [2, 2], [4, 3], [1, 4]]

 lambda式を使って、要素を指定してソートする。

 

 参考サイト

 

【メモ】Python3 list sort - Qiita

【Python入門】list sortでリストの中身を効率的にソートする方法 - Qiita

Python

記事のまとめです。

 

・数値

Python 数値 - パンダの記録帳

 

・文字列

Python 文字列 - パンダの記録帳

 

・list

Python リスト ソート 並べ替え - パンダの記録帳

 

Python listの要素の型を変える - パンダの記録帳

 

Python 文字列

文字列の扱い、一例

 

>>> word = "Python"
>>> word[0]
'P'
>>> word[1]
'y'
>>> word[-1]
'n'
>>> word[0:2]
'Py'
>>> word[2:5]
'tho'
>>> word[:2]
'Py'
>>> word[2:]
'thon'
>>> word[10]
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    word[10]
IndexError: string index out of range
>>> word[1:10]
'ython'
>>> word[10:]
''