Python基礎学習ノート(一)

24950 ワード

インストールpythonは公式サイトでインストールパッケージをダウンロードすることができ、各システムのインストール手順は自分で検索することができます.
pythonでよく使われる構文を記録します.
一、
print:
文字列は'または'''
print('hello')
print("hello")

接続文字列用+
二、演算
直接運転台でプラスマイナス乗除+-*/int()およびfloat();int()浮動小数点型数の場合、intは整数部分を保持し、例えばint(1.9)は四捨五入ではなく1を出力する.
二次**
3**2  #3 2  ,  9

剰余をとる
8%3  #8  3  2 2,   2

変数を定義し、直接値を割り当てます.タイプを明記する必要はありません.複数の変数を一度に定義できます.
apple=1
a,b,c,d=1,2,3,4

三、
whileサイクル
while condition:
    expressions

例:0-9のすべてのデータを印刷する
condition = 0
while condition < 10:
    print(condition)
    condition = condition + 1

四、
forサイクル
for item in sequence:
    expressions

例:内容はexample_listの各要素の順である注意Pythonはインデント表示プログラムを用いた構造である
example_list = [1,2,3,4,5,6,7,12,543,876,12,3,2,5]
for i in example_list:
    print(i)

五、
range使用
Pythonにファクトリ関数を内蔵し、range関数は1つのシーケンスを返し、合計3つの使用方法があります.
1 range(start, stop)
ここで、startはシーケンスの開始値であり、stopは終了値であるが、この値は含まれず、数学での表現[start, stop)のように、左側は閉区間であり、右側は開区間である.
for i in range(1, 10):
    print(i)

上記の表現は、1-9のすべての整数を返しますが、10は含まれません.
2 range(stop) startを省略すると0から始まり、range(0, stop)に相当する
3 range(start, stop, step) stepは、ステップ長、すなわち、間隔の2つの値差を表す.startから順にstepの値がstop以上になるまで増加する
for i in range(0,10, 5):
    print(i)
0, 5が出力されます.
六、
Pythonでの集合タイプは,list,tuple,dictおよびsetなどである.
Listは中括弧で命名されています.
a_list = [12, 3, 67, 7, 82]

機能:
#append()  
a = [1,2,3,4,1,1,-1]
a.append(0)  #  a        0
print(a)
# [1, 2, 3, 4, 1, 1, -1, 0]


#insert()      
a = [1,2,3,4,1,1,-1]
a.insert(1,0) #    1   0
print(a)
# [1, 0, 2, 3, 4, 1, 1, -1]


#remove  
a = [1,2,3,4,1,1,-1]
a.remove(2) #              2  
print(a)
# [1, 3, 4, 1, 1, -1]


#  
#     :
a = [1,2,3,4,1,1,-1]
print(a[0])  #     a  0   
# 1

print(a[-1]) #     a      
# -1

print(a[0:3]) #     a   0     2 ( 3   )       
# [1, 2, 3]

print(a[5:])  #     a  5          
# [1, -1]

print(a[-3:]) #     a    3          
# [1, 1, -1]


#            (index):
a = [1,2,3,4,1,1,-1]
print(a.index(2)) #     a         2     
# 1

#            :
a = [4,1,2,3,4,1,1,-1]
print(a.count(-1))
# 1



#       :
a = [4,1,2,3,4,1,1,-1]
a.sort() #         
print(a)
# [-1, 1, 1, 1, 2, 3, 4, 4]

a.sort(reverse=True) #       
print(a)
# [4, 4, 3, 2, 1, 1, 1, -1]

tupleタイプ:カッコ、またはカッコなしで記述できます
tup = ('python', 2.7, 64)
for i in tup:
    print(i)

プログラムは、行単位で「python」、2.7および64を出力します.
dictionaryタイプ(c++/javaのmapに相当)
数字と文字列は、keyまたはvalueとすることができ、同じ辞書では、すべてのkeyまたはvalueが同じ形式である必要はありません.
dic = {}
dic['lan'] = 'python'
dic['version'] = 2.7
dic['platform'] = 64
for key in dic:
    print(key, dic[key])

出力された結果は、platform 64,lan python, version 2.7であり、辞書は反復中にkeyを反復可能なオブジェクトとして返す.注意辞書ではkeyが乱順であり,すなわち挿入の順序と一致しない.順序が一致する辞書を使用する場合は、collectionsモジュールのOrderedDictオブジェクトを使用します.
setタイプ
s = set(['python', 'python2', 'python3','python'])
for item in s:
    print(item)

出力python, python3, python2setセットは重複項目を除去します.出力の結果も入力の順序ではありません.
要素をaddで追加
クリアエレメントはremoveまたはdiscard、クリアはすべてclear
char_list = ['a', 'b', 'c', 'c', 'd', 'd', 'd']

unique_char = set(char_list)   # {'b', 'd', 'a', 'c'}
unique_char.add('x')
# unique_char.add(['y', 'z']) this is wrong
print(unique_char)  # {'x', 'b', 'd', 'c', 'a'}

unique_char.remove('x')
print(unique_char)  # {'b', 'd', 'c', 'a'}

unique_char.discard('d')
print(unique_char)  # {'b', 'c', 'a'}

unique_char.clear()
print(unique_char)   # set()

setのフィルタ操作
他のものと比較して、元のsetに彼とは異なるものがあるかどうかを見るなど、フィルタリングもできます(difference).あるいは別のものと比較して、setの中に同じものがあるかどうかを見てみましょう(intersection).
char_list = ['a', 'b', 'c', 'c', 'd', 'd', 'd']
unique_char = set(char_list)  
 # {'b', 'd', 'a', 'c'}
print(unique_char.difference({'a', 'e', 'i'}))# {'b', 'd', 'c'}print(unique_char.intersection({'a', 'e', 'i'}))# {'a'}
七、
反復器
Pythonのfor構文は実際に設計モードの反復モードを実現しているので、私たち自身も反復器の要求に従って自分で反復器オブジェクトを生成して、for文で使用することができます.クラスに__iter__およびnext関数が実装されている限り、オブジェクトはfor文で使用できます.Fibonacci反復オブジェクトを作成します.
# define a Fib class
class Fib(object):
    def __init__(self, max):
        self.max = max
        self.n, self.a, self.b = 0, 0, 1

    def __iter__(self):
        return self

    def __next__(self):
        if self.n < self.max:
            r = self.b
            self.a, self.b = self.b, self.a + self.b
            self.n = self.n + 1
            return r
        raise StopIteration()

# using Fib object
for i in Fib(5):
    print(i)

上位5つのFibonacciデータ1,1, 2, 3, 5が出力されます.
八、
ビルダー
反復器の使用に加えて、Pythonはyieldキーワードを使用しても同様の反復の効果を実現することができ、yield文は実行されるたびに、すぐに上位呼び出し者に結果を返し、現在の状態は反復器の次のループ呼び出しのために保持されます.このような利点は、ハードウェアリソースを節約し、必要に応じて実行し、毎回1回しか実行しないことです.
def fib(max):
    a, b = 0, 1
    while max:
        r = b
        a, b = b, a+b
        max -= 1
        yield r

# using generator
for i in fib(5):
    print(i)

上位5つのFibonacciデータ1,1, 2, 3, 5が出力されます.
(欠点はfib(0)が呼び出されるとyieldにデータがないのでfib(0)に戻り値がない)
九、
1.if判断
if condition:
    expressions

例:
x = 1
y = 2
z = 3
if x < y:
    print('x is less than y')

2.if else判断
     
if condition:
    true_expressions
else:
    false_expressions

例:
x = 1
y = 2
z = 3
if x > y:
    print('x is greater than y')
else:
    print('x is less or equal to y')

pythonには、condition ? value1 : value2 のような3つのオペレータはありません.しかし、pythonは、if-elseの行内式によって同様の機能を達成することができる.
var = var1 if condition else var2

上記の文は、conditionの値がTrueであれば、var1の値をvarに割り当てることができる.Falseの場合、var2の値はvarに与えられる.
worked = True
result = 'done' if worked else 'not yet'
print(result)

まず、workTrueであれば、done文字列をresultに割り当て、そうでなければnot yetresultに割り当てると判断する.結果はdoneを出力します.
3.if elif else判断
     ¶
if condition1:
    true1_expressions
elif condition2:
    true2_expressions
elif condtion3:
    true3_expressions
elif ...
    ...
else:
    else_expressions

十、def関数
     
def function_name(parameters):
    expressions

Pythonはdefを使用して関数定義を開始し、次いで関数名、括弧内部は関数のパラメータ、内部は関数の具体的な機能実現コードであり、関数に戻り値がある場合はexpressionsの論理コードでreturnで返す.
parametersの位置は関数のパラメータ(パラメータがなくてもよい)であり,呼び出し時に伝達すればよい.
例:
def function():
    print('This is a function')
    a = 1+2
    print(a)

上ではfunctionという名前の関数を定義しましたが、関数はパラメータを受信していないので、カッコの内部は空で、すぐに関数の機能コードです.スクリプトを実行すると、関数のみを定義し、関数を実行していないため、出力は出力されません.このときPythonコマンドプロンプトに関数呼び出しfunction()を入力します.ここでは呼び出し関数のカッコを省略できないことに注意してください.関数内の機能コードが実行され、結果が出力されます.
This is a function
3

スクリプトで呼び出すスクリプトを使用する場合は、スクリプトに関数呼び出し文を最後に追加するだけです.
function()

では、スクリプトを実行すると、関数が実行されます.
パラメータ:
def func(a, b):
    c = a+b
    print('the c is ', c)

関数のデフォルトパラメータ:
def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m):
    expressions

例:
def sale_car(price, color='red', brand='carmy', is_second_hand=True):
    print('price', price,
          'color', color,
          'brand', brand,
          'is_second_hand', is_second_hand,)

じこよびだし
スクリプトを実行するときにユニットテストなどのコードを実行したい場合は、スクリプトの最後にユニットテストコードを加えることができますが、このスクリプトがモジュールとして機能を提供するときにユニットテストコードも実行されます.これらは往々にして望ましくありません.私たちはこれらのコードをスクリプトの最後に入れることができます.
if __name__ == '__main__':
    #code_here

スクリプトを実行すると、if判定文がTrueになり、内部のコードが実行されます.スクリプトが外部から呼び出された場合、if判定文はFalseであり、内部コードは実行されません.
可変パラメータ
関数の可変パラメータは,その名の通り,入力されたパラメータが変化可能であり,1個,2個から任意個である.もちろん、これらのパラメータは、listまたはtuple転送にカプセル化することができるが、pythonicが足りない.可変パラメータを使用すると、可変パラメータがこれらのパラメータを飲み込むため、可変パラメータは関数定義で特定のパラメータとデフォルトパラメータの前に現れないことに注意してください.
def report(name, *grades):
    total_grade = 0
    for grade in grades:
        total_grade += grade
    print(name, 'total grade is ', total_grade)

入力パラメータはnameであり、後のパラメータ*grades*修飾を使用し、このパラメータが可変パラメータであり、反復可能なオブジェクトであることを示す関数を定義します.この関数は名前と各科の成績を入力し,名前と合計成績を出力する.したがって、関数report('Mike', 8, 9)を呼び出すことができ、出力された結果はMike total grade is 17であり、report('Mike', 8, 9, 10)を呼び出すこともでき、出力された結果はMike total grade is 27である.
キーワードパラメータ
キーワードパラメータは、0個または任意のパラメータ名を含むパラメータを入力ことができ、これらのパラメータ名は関数定義に現れず、これらのパラメータは関数内部で自動的に辞書(dict)にカプセル化される.
def portrait(name, **kw):
    print('name is', name)
    for k,v in kw.items():
        print(k, v)

パラメータnameとキーワードパラメータkwとを入力する関数を定義し、**修飾を使用します.このパラメータがキーワードパラメータであることを示し、通常、キーワードパラメータは関数パラメータリストの最後に配置されます.呼び出しパラメータportrait('Mike', age=24, country='China', education='bachelor')出力:
name is Mike
age 24
country China
education bachelor

可変パラメータとキーワードパラメータにより、任意の関数をuniversal_func(*args, **kw)で表すことができます.