python-関数、文字列、リスト、メタグループ、コレクション、辞書

6904 ワード

pythonで2つの変数の値を交換する場合は、直接交換できます.
eg
    x, y = y, x
関数は、ほとんどのプログラミング言語でサポートされているコードの「構築ブロック」ですが、pythonの関数は少し異なります.pythonの関数のパラメータにはデフォルト値があります.
注意:pythonでの関数リロードの概念
関数のパラメータについてはパラメータの個数が不確定な場合があるので,開発者が不確定な場合には可変パラメータを用いることができる.
eg
def add(*args):
    total = 0
    for val in args:
        total += val
    return total

モジュール:pythonにとってファイルは実際にはモジュールであり、異なるモジュールの関数名は使用時にインポートするだけで同じでよい.
eg
import module1 as m1
import module2 as m2

m1.foo()
m2.foo()

しかし、1つの悪い点は、モジュールを再インポートするときに実行可能なコードがあれば、インポート中にこれらのコードが実行されることですが、私たちはそうは望んでいません.そのため、モジュールに実行コードを作成したら、実行コードを以下の条件に置くことが望ましいです.これにより、if条件下のこれらのコードは、モジュールを直接実行しない限り、直接実行されません.直接実行するモジュールの名前だけが「_main_」なので
eg
# __name__ Python                 
#    Python               __main__
if __name__ == '__main__':
    print('call foo()')
    foo()
    print('call bar()')
    bar()

本節では,文数を求める問題に遭遇し,その代表性が強い.回文数字の問題を解決するために、回文数字の各数字を分割して新しい変数に逆順に配置し、その数字を元の数字と比較して元の数字が回文数字であるかどうかを得ることができます.
ほとんどの言語では変数カスタマイズの問題があり、pythonにも同様の問題があります.変数は、グローバル変数とローカル変数に分けられます.ローカル変数は、グローバル変数を直接変更することはできません.まず、グローバル変数として宣言する必要があります.
eg
def foo():
    global a
    a = 200
    print(a)  # 200


if __name__ == '__main__':
    a = 100
    foo()
    print(a)  # 200

pythonでは文字列の操作について多くの定義があります.
eg
重複出力は*番号で表示できます.
   s1 = 'hello ' * 3
   print(s1) # hello hello hello 
+演算子を使用して、文字列の結合を実現します.
   s1 = 'hello ' * 3
   s2 = 'world'
   s1 += s2
   print(s1) # hello hello hello world
inおよびnot inを使用して、1つの文字列に別の文字列が含まれているかどうかを判断できます.
   s1 = 'hello ' * 3
   print('good' in s1) # False
[]および[:]演算子を使用して、文字列から文字または文字を取り出すことができます.
str2 = 'abc123456'
#               (    )
print(str2[2]) # c
#      (                )
print(str2[2:5]) # c12
print(str2[2:]) # c123456
print(str2[2::2]) # c246
print(str2[::2]) # ac246
print(str2[::-1]) # 654321cba
print(str2[-3:-1]) # 45

Pythonでは、一連の方法で文字列の処理を完了することもできます.
  
str1 = 'hello, world!'
#       len        
print(len(str1)) # 13
#              
print(str1.capitalize()) # Hello, world!
#                  
print(str1.title()) # Hello, World!
#             
print(str1.upper()) # HELLO, WORLD!
#              
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
#  find              
# print(str1.index('or'))
# print(str1.index('shit'))
#                 
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
#                 
print(str1.endswith('!')) # True
#                        
print(str1.center(50, '*'))
#                        
print(str1.rjust(50, ' '))
str2 = 'abc123456'
#             
print(str2.isdigit())  # False
#             
print(str2.isalpha())  # False
#                
print(str2.isalnum())  # True
str3 = '  [email protected] '
print(str3)
#                   
print(str3.strip())

以上の方法はわざと記憶する必要はありません.使うときに検索すればいいです.
文字列のフォーマットを完了するには、文字列で指定した方法を使用します.
eg
a, b = 5, 10
print(f'{a} * {b} = {a * b}')

リスト#リスト#
次のコードは、リストの操作を示しています.
list1 = [1,3,5,7,100]
print(list1)
list2 = ['hello']*5
print(list2)
#    (    )
print(len(list1))
print(len(list2))
#              
print(list1[0])
print(list1[3])
#                 
list1[0]=200
print(list1)
#       
list1.append(400)
print(list1)
#         
list1.insert(1,32)
print(list1)
#    
list1.remove(3)
print(list1)
#       
del list1[0]
#     
list1.remove(32)
print(list1)
#    
list1.clear()
print(list1)

文字列と同様に、リストはスライス操作もできます.使い方は同じです.
eg
fruits4 = fruits[-3:-1]
print(fruits4)

リストが作成され、新しいリストに値が割り当てられると、新しいリストは作成されず、リストの参照が新しいリストに割り当てられます.
eg
fruits = ['grape', 'apple', 'strawberry', 'waxberry']
fruit3 = fruits  #               

リストのソート
eg
list1 = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
list2 = sorted(list1)
# sorted                     
#          sorted             
list3 = sorted(list1, reverse=True)
#   key                             
list4 = sorted(list1, key=len)
print(list1)
print(list2)
print(list3)
print(list4)
#                        
list1.sort(reverse=True)
print(list1)

リストの生成構文を使用して、リストを作成します.
f = [x for x in range(1, 10)]
print(f)
f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)

この方法を使用すると便利ですが、メモリを占有しすぎるという現実的な問題があります.この構文はリストを作成した後、要素が準備されているため、メモリ領域を多く消費する必要があります.これを解決するために、必要に応じてジェネレータオブジェクトからデータを取得できるジェネレータオブジェクトを作成することにしました.また、余分なメモリ容量も消費しませんが、必要に応じて必要なデータを生成するのに余分な時間がかかります.
eg
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f))  #                   
print(f)
for val in f:
    print(val)

メタグループ
Pythonのメタグループはリストと似ていますが、メタグループの要素が変更できない点が違います.
 eg
t = ('Boran', 38, True, 'Aug')
print(t)
#         
print(t[0])
#        
for member in t:
    print(member)
#        
# t[0] = 'Jack'  # TypeError

しかし、メタグループとリストは互いに変換できます.
#         
person = list(t)
#         
fruits_list = ['apple', 'banana', 'orange']
fruits_tuple = tuple(fruits_list)

リストを持っている以上、なぜメタグループが必要なのですか?
1.メタグループの要素は変更できません.実際、プロジェクト、特にマルチスレッド環境では、不変のオブジェクトを使用するのが好きかもしれません.(一方、オブジェクトの状態は変更できないため、これによる不要なプログラムエラーを避けることができ、簡単に言えば、変更されたオブジェクトよりも変更されたオブジェクトの方がメンテナンスが容易である.一方、変更されないオブジェクトの内部状態を変更できるスレッドはないため、変更されたオブジェクトは自動的にスレッドが安全であり、同じ処理を省くことができるステップ化されたオーバーヘッド.不変のオブジェクトは、共有されたアクセスを容易にすることができます).したがって、要素を追加、削除、修正する必要がない場合は、メタグループを使用することを考慮することができます.もちろん、1つの方法で複数の値を返す場合は、メタグループを使用するのも良い選択です.
2.メタグループは、作成時間と使用領域の両方でリストより優れています.
しゅうごう
Pythonの集合は数学の集合と一致し,c素ではなく,交差,並列,差分などの演算が可能である.
set1 = {1, 2, 3, 3, 3, 2}
print(set1)
set1.add(4)
#         
set3 = set((1, 2, 3, 3, 2, 1))

辞書
 key:value       

eg
scores = {'  ':11,'  ':12}
#            
print(scores['  '])
#       
for elem in scores:
    print('%s\t-->\t%d'%(elem,scores[elem]))
#        
scores['  ']=13
print(scores)
scores.update(  =14)
print(scores)
#        
print(scores.popitem())
print(scores.pop('  '))
#    
scores.clear()
print(scores)