独学python[4]
5641 ワード
ここ数日、メタグループ、リスト、mathライブラリとrandomライブラリに関する基礎知識を学びました.
メタグループtupleは、複数の要素を含むタイプで、要素間をカンマで分割します.例えば、リストはメタグループに類似 リスト内の要素タイプごとに異なる場合があります リスト内の要素にアクセスする場合はインデックス形式 リストがタプルと異なる リストサイズに制限はなく、随時変更可能 リストオペレータ
オペレータの意味
< list1 > + < list2>
2つのリストを接続
メタグループtupleは、複数の要素を含むタイプで、要素間をカンマで分割します.例えば、
t1 = 123,456, “hello”
タプルは空であってもよい:t2=()
タプルが1つの要素を含む場合:t3=123
タプルの外側に括弧を使用してもよいし、タプルの要素を使用しなくても異なるタイプであってもよい.1つのメタグループは、別のメタグループの要素としても使用できます.この場合、要素としてのメタグループはカッコを大きくして曖昧さを避ける必要があります.例:>>> t3=123,456,("hello"," ")
メタグループ内の各要素には前後関係があり、インデックスを使用してメタグループ内の要素にアクセスできます.例:>>>t3[0]
メタグループ定義後は変更も削除もできません.たとえば、>>>t3[0]=456
は文字列タイプと同様に、インデックス区間を介してメタグループの要素の一部にアクセスできます.たとえば、t[1:]
は文字列と同様に、メタグループ間で+番号と*番号を使用して演算できます.tuple(メタグループ)タイプ定義後、可変の意味を変更することはできません.可変ではないのでより安全です.この場合を考慮しなければ、リストタイプを使用します.(以下)基本概念リストlistは秩序化された要素集合である.リスト要素はインデックスを使用して単一の要素にアクセスできます.>>> a=[0,1,2,3,4,5,6,7,8,9]
>>>print(a)
[0,1,2,3,4,5,6,7,8,9]
>>>
オペレータの意味
< list1 > + < list2>
2つのリストを接続
- *<整数タイプ>
リストを整数で繰り返す
- [<整数タイプ>]
索引リストの要素
len( < seq > )
リスト内の要素の数
- [<整数タイプ>:<整数タイプ>]
リストのサブシーケンスを取得
for < var > in < list > :
リストを繰り返し列挙する
< expr > in < list >
メンバーチェック、
リストアクション
>>> vlist=[0,1,2,3,4]
>>> vlist*2
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
>>> len(vlist[2:])
3
>>> for i in vlist [:3]:
print(i)
0
1
2
>>> 2 in vlist
True
リスト関連アクション
方法
メソッドの意味
< list > . append ( x )
要素xをリストの最後に追加
< list > . sort ( )
リスト要素のソート
< list > . reverse ( )
シーケンス要素を反転
< list > . index ( )
最初に現れた要素xのインデックス値を返します.
< list > . insert ( i, x )
位置iに新しい要素xを挿入する
< list > . count ( x )
リスト内の要素xの数を返します.
< list > . remove ( x )
リストに最初に表示された要素xを削除
< list > . pop ( i )
リスト内の位置iの要素を取り出し、削除する
上に関連するインスタンス
>>> vlist=[0,1,2,3,4]
>>> vlist.append('python')
>>> vlist
[0, 1, 2, 3, 4, 'python']
>>> vlist.reverse()
>>> vlist
['python', 4, 3, 2, 1, 0]
>>> vlist.index(3)
2
>>> vlist.pop(2)
3
>>>vlist
['python', 4, 2, 1, 0]
>>>
文字列の場合、split()関数を使用して文字列をリストに分割できます.デフォルトではスペースで分割されます.
次に、学習したmathライブラリに関する内容を示します.
mathライブラリでよく使われる数学関数
関数#カンスウ#
数学表現
意味
円周率pi
π
πの近似値、15ビット小数
自然定数e
e
eの近似値、15ビット小数
ceil(x)
ڿxۀ
浮動小数点数を上げる
floor(x)
ہxۂ
浮動小数点数の下揃え
pow(x,y)
x^y
xのy次方を計算する
log(x)
lg x
eベースの対数
log10(x)
ln10x
10ベースの対数
sqrt(x)
x^1/2
平方根
常用数学関数
関数#カンスウ#
数学表現
意味
exp(x)
eのx乗、
degrees(x)
ラジアン値を角度に変換
radians(x)
角度値を円弧に変換
sin(x)
sin x
サイン関数
cos(x)
cos x
コサイン関数
tan(x)
tan x
正接関数
asin(x)
arcsin x
どうせ弦関数,x∊[-1.0,1.0]
acos(x)
arccos x
反コサイン関数,x∊[-1.0,1.0]
atan(x)
arctan x
どうせ接線関数,x∊[-1.0,1.0]
randomライブラリ共通関数
関数#カンスウ#
意味
seed(x)
ランダム数のシード値を指定します.デフォルトのランダムシードはシステムクロックです.
random()
[0,1.0]の間のランダム小数を生成
uniform(a,b)
aからbの間のランダム小数を生成する
randint(a,b)
aからbの間のランダム整数を生成する
randrange(a,b,c)
aからbまでcで増加する数をランダムに生成する
choice()
リストから要素をランダムに返す
shuffle()
リスト内の要素をランダムに乱す
sample(,k)
指定したリストからk個の要素をランダムに取得する
randomライブラリとその使用
>>> from random import *
>>> random()
0.7129609089373519
>>> uniform(1,10)
4.645197683144932
>>> randiant(1,10)
5
>>> randrange(0,10,2)
0
乱数ライブラリとその使用
>>> ra=[0,1,2,3,4,5,6,7,8,9]
>>> choice(ra)
5
>>> shuffle(ra)
>>> ra
[5, 7, 6, 2, 0, 8, 4, 9, 3, 1]
>>> sample(ra,4)
[6, 2, 3, 7]
>>>
seed()関数を呼び出し、ランダムシードをリセット
>>> seed(10)
>>> uniform(1,10)
6.142623352209221
>>> uniform(1,10)
4.860001492087032
上記のseed(10)を再設定すると,ランダム関数を呼び出すたびに生成される乱数は同じである.これがランダムシードの役割(本当の意味でのランダムではなく、擬似ランダム)です.コンピュータは決定装置であり、本当のランダム数を生成できないからです.したがって,計算機によって生成される乱数はいずれも1つのシードから始まる擬似ランダムシーケンスである.同じランダムシードは同じ擬似乱数シーケンスを生成し,プログラムの検証実行にも有利である.
πの計算円周率πは無理数であり,π値を計算できる正確な式はなく,πの計算は近似アルゴリズムしか採用できない.国際的に公認されたPI値計算はモンテカルロ法を用いた.
モンテカルロ(Monte Carlo)法は、ランダムサンプリングまたは統計的試験法とも呼ばれる.解を求める問題があるイベントが現れる確率、またはあるランダム変数の期待値である場合、ある「実験」の方法で解くことができる.簡単に言えば,モンテカルロはランダム試験を用いて問題を解く方法である.πの計算におけるpythonでのモンテカルロ法の使用:
from random import random
from math import sqrt
from time import clock
DARTS = 1200
hits = 0
clock()
for i in range(1,DARTS):
x, y = random(), random()
dist = sqrt(x**2 + y**2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi %s" % pi)
print(" %-5.5ss" % clock())
入力部は、初期変数DARTSにより与えられる.出力部print関数で画面に印刷する操作部の主なコードは以下の通りです.
for i in range(1,DARTS) :
x, y = random(), random()
dist = sqrt(x**2 + y**2)
if dist <= 1.0:
hits = hits +1
pi = 4 * (hits/DARTS)
コードボディはループであり,複数の点を散布する過程をシミュレートする.1つの投点についてrandom()関数によりランダムな座標値(x,y)を与え、開方関数sqrt()を用いて投点から原点距離を計算し、if文によりこの距離が円内に落ちるか否かを判断する.最終的には、総投点が円内に落ちる数に基づいて比を計算し、π値を得る