ホームページ >バックエンド開発 >Python チュートリアル >Pythonの基本1
メモリ割り当ての問題について
新しく定義された文字列変数は、デフォルトで新しいメモリ空間を開きます
以下に示すように、リスト、タプル、辞書などの他の同様のインデックスは、実際には変数名が同じアドレス空間を指しているだけです
1 ##文字列の新しい定義により、新しいメモリ空間が開きます 2 >>> str1 = 'hoho' 3 >>> id(str1), id(str2) ) #メモリ オブジェクト アドレスを表示し、メモリ アドレスを観察します。つまり、str2 がメモリ空間 5 (140297199501752, 140297199501752) を新しく開いています。 #ここで見られるのと同じことは、文字列が大きい場合、Python の内部メカニズムによって引き起こされます。十分に違います、心配しないでください 6 >>> str2 = 'ヘイヘイ' 7 >>> 8 'ホホ' 9 >>> str210 'ヘイヘイ'11 > > id (str1)、id (str2) (ラベルとして理解できます) は、以下に示すように、辞書を例として同じメモリ アドレスを指します15 >>>ほほ'}16 >>> dic2 = dic117 >>>id(dic1),id(dic2)18 (140297199190088)19 >>> '}20 >>> dic2 = dic121 >> id(dic1),id(dic2) #メモリオブジェクトのアドレスを確認すると、dic2 が同じであることがわかります。 22 (140297199191752, 140297199191752)23 >>> dic2['name' ] = 'heihei'24 >>> dic225 {'name': 'heihei'}26 >>> {'name': 'heihei'}
リスト、タプル、辞書のコピーの問題 (浅いコピーと深いコピーのコピーモジュールの使用)
1. リストとタプルはスライスを使用して浅いコピーを実装できます。浅いコピー(辞書を含む)を使用するにはcopyモジュールを使用します
2. copy.deepcopy()を使用します
1 >>> インポートコピー2 >>> 3 >>> list2 = list1 4 >>> list2[0] = 2 #list2 が変更され、それに応じて list1 も変更されました 5 >>> list1 6 [2, 2] 7 >> ;> list3 = list1[:] #浅い複雑さ、配列のスライスを使用して浅いコピーを実行します 8 > ;>> list3 = copy.copy(list1) 9 >>> ),id(list3) #ここではアドレス空間が異なることがわかります 10 (140297199250696, 140297199250696, 140297199247560)11 >>>
12 >>> list4 = [1,[2]] # #複雑な構造ではディープ コピーを使用する必要があります 13 >>> list5 = list4[:]14 >>> list515 [1, [2]]16 >>> 617 >>> list418 [1, [6]] #ここから見ることができます 実際、内部のリストはコピーされず、それに応じて list4 も変更されています19 >>> list6 = copy.deepcopy( list4) #ディープコピーはここで使用されます20 >>> list6[1][0] = 821 >>> list622 [1, [8]]23 >>> ]] #ここでコピーされたものが表示されます
よく使われる組み込み関数
Pythonにはよく使われる組み込み関数がたくさんありますが、それを確認する方法がわかります。関数のヘルプ
通常は3つのステップに分かれています
type(変数)--->変数を取得
dir(クラス名) --> クラス内で使用可能なメソッドを確認します。このうち、__abs__ のような二重アンダースコアで始まるものには、次のような代替メソッドがあります。 __abs__ <=> (クラス名または関数名) ---> クラスの下で関数の使用法を表示するか、関数の使用法を直接表示します
Shaping
1 >>> s,y = divmod(7,3) ## divmod はデータを返します。値は (商, 剰余) で、ページングに使用できます。 2 >>>>>>>>>>>>>>>> ) #absは絶対値をとります 6 27 >>> len(str(-2)) #は速度の長さをとります 8 2
浮動小数点をとります
1 >> ; a = 7.02 >>> divmod(a,3)3 (2.0, 1.0)4 >>> a = 7.2355 >>> #6 7.247 > ;>> a.__trunc__() #8 7 に四捨五入
コードを表示
文字列
1 >>> str1 = 'これは文字列です' 2 >>> 'is' in str1 3 True 4 >>> # スライス操作とインデックス 5 'hi' 6 >>> len(str1) #長さ 7 16 8 >>> str1.find('is',3,9) ; >>> str1.find('iss') #見つからない場合は -1 を返します。 -114 >>> str1.index('is', 3)15 516 >>> str1.index('iss')17 トレースバック (最後の呼び出し):18 ファイル ""、行 1、19 値エラー: 部分文字列が見つかりません20 >>> ' aaa'21 >>> str1.strip() 空白と改行を削除して、 22 'aaa'23 >>> str1.lstrip()24 'aaa' 25 >>> str1.rstrip()26 ' aaa'27 >>> str1 = 'duiqi' #整列操作 28 >>> str1.ljust(20)29 'duiqi ;>> ,'*')31 'duiqi****************'32 >>> str1.rjust(20,'*' )33 '****** ************duiqi'34 >>> str1.center(20,'*')35 '************duiqi*** * ****'36 >>> str1 = 'これは文字列'37 >>> str1.split() ##分割操作 38 ['this', 'is', 'a' , 'string'] 39 > ->'.join([str(i) for i in list1]) #接続操作 43 '1->2->3'44 >>>str145 'thisは文字列です'46 >> str1.count('is') #Count 47 248 >>> str1.replace('is','os') #Replace 49 'これは文字列です' 50 >>> str1.replace('is','os',1) #置換、1 だけ置換 51 'これは文字列です' 52 53 str1.startswith('sub') #54 str1 から始まるもの.endswith('sub' ) #末尾の文字 55 str1. lower() #小文字に変換 56 str1.upper() #大文字に変換
コードを表示
リストとタプル(タプルは変更不可)
1 > >> lst1 = ['a'] 2 >>> #追加 3 >>> ] 5 > >> lst2 = ['c','d'] 6 >>> #新規拡張 7 >>> b', 'c', 'd'] 9 >>> lst1.insert(0,'z') #insert10 >>> lst111 ['z', 'a', 'b', 'c ', 'd']12 >>> lst1.pop() #末尾を削除 13 'd'14 >>> lst115 ['z', 'a', 'b', ' c'] 16 >>> lst1.remove('z') #指定された要素を削除 17 >>> ['a', 'b', 'c']19 >>> ; lst1 = [ 'a', 'b', 'c', 'd']20 >>> # 浅いコピー python3 のみが 21 >>> .copy() 22 >>> lst223 ['a', 'b', 'c', 'd']24 >>> #リストをクリアします 25 >> > lst226 [] 27 >>> #リスト28 >>> ['d', 'b', 'a']30 >>> .sort() # ソート 31 >>> lst132 ['a', 'b', 'c', 'd']33 >>> lst1.append('a')34 >> ;> lst1.count('a') #カウント 35 236 >>> ['a', 'b', 'c', 'd', 'a']38 >>> len(lst1) # 長さ 39 540 >>> lst1.index('a') #インデックス 41 042 >>> lst1.index('a',1) #インデックス 43 4
コード
辞書
1 >>> dic1 = {'key1' : 'a','key2' : 'b'} 2 >>> #辞書の値を取得します、見つかりませんデフォルトでは None を返します。 3 'a' 4 >>> dic1.get('key3') 5 >>> 6 dict_items([('key2', ' b' ), ('key1', 'a')]) #Return タプル list 7 >>> list(dic1.items()) 8 [('key2', 'b'), ('key1' , 'a')] 9 >>> dic1.keys() #戻り値キーリスト 10 dict_keys(['key2', 'key1'])11 >>> #戻り値list 12 dict_values(['b', 'a'])13 >>> dic2 = dic1.copy() #浅いコピー 14 >>> dic215 {'key2': 'b', 'key1 ' : 'a'}16 >>> dic1['key3'] = 'c' #割り当て (変更)17 >>> dic118 {'key2': 'b', 'key1': ' a ', 'key3': 'c'}19 >>> dic1.pop('key1') #指定されたkey20を削除 'a'21 >>> dic122 {'key2': 'b' , 'key3': 'c'}23 >>> dic1.get('key1','a') #値、いいえ 'a'24 'a'25 >>> dic126 {' key2 ': 'b', 'key3': 'c'}27 >>> dic1.setdefault('key1','a') #デフォルトを設定します (役に立たないようです) 28 'a'29 >> ; > dic130 {'key2': 'b', 'key1': 'a', 'key3': 'c'}31 >>> dic3 = {'name':'update'}32 > ;> dic1.update(dic3) #Update 33 >>> dic1 34 {'key2': 'b', 'name': 'update', 'key1': 'a', 'key3': ' c'}35 >>> del dic3 #削除 36 >>> dic137 {'key2': 'b', 'name': 'a', 'key3 ' : 'c'}38 >>> len(dic1) #Length 39 4
コードを表示
上記は Python の基本的な内容です。その他の関連記事については、PHP 中国語の Web サイトをご覧ください。 (www.php.cn)!