常駐メカニズム
プログラムの開発の可能性が関与することは働いていません
- 存在意義:メモリを節約し、効率を改善します
==:両側で等しい同じ内容かどうかを決定します
である:メモリアドレスが両側で同じ値か否かを判断します
機構は、注文を常駐:ブロック----->(コードブロックとコードブロックとの間のように理解される)小さなデータ・プール
コードブロックは、機構(PyCharm試験)常駐します
定義:ファイルの各行、関数、モジュール、クラス、対話モード(端末)PY
同じメモリアドレスに続いて
デジタル:-5 +無限大に(実際には-5 256個のメモリアドレスへのすべての場所で同じです)
a = 256 b = 256 print(a is b) #True print(id(a),id(b)) #1516347472 1516347472 相同(固定地址)
a = 257 b = 257 print(a is b) #True print(id(a),id(b)) #3075275480848 3075275480848 相同(可变地址)
a = -6 b = -6 print(a is b) #False print(id(a),id(b)) #2228967021296 2228967021200 不相同(可变地址)
弦
同じ定義の内容は、それが同じメモリアドレスがある場合には
a = "123中文english%*-" b = "123中文english%*-" print(a is b) #True print(id(a),id(b)) #2064241611472 2064241611472 相同(可变地址)
(中国語や特殊記号を使用することはできません - 0/1を掛けた場合を除き - 自体が空の文字列に理解されている)を乗算場合、全長は20を超えることはできません
a = "123中文english%*-" * 1 b = "123中文english%*-" * 1 print(a is b) #True print(id(a),id(b)) #2518570390224 2518570390224 相同(可变地址)
a = "12中eng%*-" * 2 #有中文及特殊符号 b = "12中eng%*-" * 2 print(a is b) #False print(id(a),id(b)) #2180300624592 2180300625376 不相同(可变地址)
a = "123englis" * 2 b = "123englis" * 2 print(a is b) #True print(id(a),id(b)) #2420451431240 2420451431240 相同(可变地址)
a = "123englis66666" * 2 #总长度超限 b = "123englis66666" * 2 print(a is b) #False print(id(a),id(b)) #1923061610656 1923061830800 不相同(可变地址)
小さなプールデータは、機構(テスト端子)に常駐します
プール機構のブロックとの間に存在するコードの小さなデータブロックの実装
同じメモリアドレスに続いて
デジタル:-5 256にメモリアドレスが(どこでも同じ)固定されています
>>> a = 1 >>> b = 1 >>> print(a is b) True >>> print(id(a),id(b)) 1531740272 1531740272 #相同(固定地址)
>>> a = 257 >>> b = 257 >>> print(a is b) False >>> print(id(a),id(b)) 2544622726000 2544622468944 #不相同(可变地址)
弦
純粋メモリアドレスながら同じ数字や文字を定義する場合
>>> a = "123aa" >>> b = "123aa" >>> print(a is b) True >>> print(id(a),id(b)) 2544623459496 2544623459496 #相同(可变地址)
Python36乗算(中国語と特殊ないシンボル - 乗算0時以外 - 空の文字列として理解される)場合、全長は20を超えることはできません
>>> a = "www+1" * 0 >>> b = "www+1" * 0 >>> print(a,b) >>> print(a is b) True >>> print(id(a),id(b)) 1714965740208 1714965740208 #相同(可变地址)
Python37乗算(中国語と特殊ないシンボル - 乗算0時以外 - 空の文字列として理解される)場合、全長は4096を超えることができません
コピー深さ
効果
- コードを開発する際に後期の問題を回避するには、理由を知りません
- インタビュー(譲渡?シャローコピー?ディープコピー?)
割り当て
より多くの変数名が同じメモリアドレスを指します
不変のデータ・タイプ:新しいオープンスペース
a = 10 b = a # a,b 都指向10的内存地址 a = 11 #对a赋值不影响b print(a,b) print(id(a),id(b)) #不同
変数データタイプ:その場で修正
lst =[1,2,3] #可变数据类型 lst1 = lst #lst,lst1 都指向列表的内存地址 print(lst,lst1) #[1, 2, 3] [1, 2, 3] lst.append(4) lst = [1,2,3,4] print(lst,lst1) #[1, 2, 3, 4] [1, 2, 3, 4] print(id(lst),id(lst1)) #不同
dic = {"key":11,"key2":[1,2,3]} dic1 = dic #dic,dic1都指向字典的内存地址,理解为新的引用 dic["key2"].append(5) #两字典同步修改 del dic["key"] #两字典同步修改 print(dic,dic1) #{'key2': [1, 2, 3, 5]} {'key2': [1, 2, 3, 5]} print(id(dic),id(dic1)) #地址相同,可变,但不是同一数据?
シャローコピー
それが値を見つけることであるメモリ・アドレスから分かるように、第1層の専用メモリアドレスをコピーし、可変および非可変データは、共有され、次いで(一見機構コードブロックを常駐する要素値が続く)表示
コピー()
lst = [1,2,3] lst1 = lst.copy() #复制,新的列表 print(lst,lst1) #[1, 2, 3] [1, 2, 3] lst1.append(4) #lst1追加,不影响lst print(lst,lst1) #[1, 2, 3] [1, 2, 3, 4] print(id(lst),id(lst1)) #不同,可变 print(id(lst[0]),id(lst1[0]),id(1)) #1530757232 相同 固定
薄切
lst = [1,2,[3,4]] lst1 = lst[:] #只拷贝第一层 print(id(lst),id(lst1)) #不同 print(id(lst[-1]),id(lst1[-1])) #两列表中的列表元素地址相同 lst1[-1].append(5) print(lst,lst1) #[1, 2, [3, 4, 5]] 相同(对相同地址的操作) print(id(lst[-1]),id(lst1[-1])) #地址不变
ディープコピー
メモリアドレスの共有不変データ要素;
変数のデータ型に関係なく、この原則(お互いに理解が影響しません)ネストされているどのように多くの層、新しいスペースを開けません
import copy #导入copy模块 lst = [-111,-111,[3,4]] lst1 = copy.deepcopy(lst) #深拷贝 print(id(lst),id(lst1)) #外壳不一样 print(id(lst[0]),id(lst1[0])) #不可变数据 --共用 print(id(lst[1]),id(lst1[1])) #不可变数据 --共用,开始定义过是不同地址,复制出来的是用相同地址 print(id(lst[-1]),id(lst1[-1])) #可变数据--新开辟空间 print(id(lst[-1][-1]),id(lst1[-1][-1])) #里面的不可变数据 --共用
セット
定義
- Pythonのデータ型、ランダム、変数、反復すること
- キーワードのセット
- -emptyセット()S = {1,2,3,4}
- セットの要素のみ(なし辞書値として理解される)(ハッシュ可能)、不変です
効果
重複排除
lst = [1,2,1] print(list(set(lst))) #[1, 2]
コンテナ:データを保存します
オペレーティング
増加
s = set() s.update("alex") #迭代添加 s.add("alex") #直接添加 print(s)
削除
s = {"0","1","2","3"} s.pop() #随机删除 pop具有返回值 s.remove("0") #指定元素删除 s.clear() #清空 后的显示set() print(s)
変更
- 最初のカットの後にプラス
- 変換データ型に変更
検索
- forループ
- ダイレクトプリント
セットの関係
- 連合|
- 交差点&
- 補完^
- 違いは、設定します -
- スーパーセット(スーパーセット)>分析
- サブセット<分析
python = {"海绵","一帆","心累","大圣"} linux = {"海绵","大圣","哈哈哈","嘿嘿嘿"} print(python | linux) #并集 {'嘿嘿嘿', '大圣', '哈哈哈', '海绵', '一帆', '心累'} print(python & linux) #交集 {'海绵', '大圣'} print(python ^ linux) #补集 {'嘿嘿嘿', '哈哈哈', '一帆', '心累'} print(python - linux) #差集 {'一帆', '心累'} print(linux - python ) #差集 {'嘿嘿嘿', '哈哈哈'}
python = {"海绵","一帆","心累","大圣"} linux = {"海绵","大圣"} print(python > linux) #判断python是不是linux的超集 True print(python < linux) #判断python是不是linux的子集 False