単一要素を含む1元基
作成された要素は、間違ってあり、その中タプルとしてPythonの引数の型の一部の機能、:
c = (5) # NO!
!
これは、実際に化粧要素5、要素の後に追加するには必見を作成します逗号
:
c = (5,) # YES!
2デフォルトパラメータがnullに設定されています
容器の種類とは、nullに設定されている場合、関数の引数のデフォルト値が含まれています:
def f(a,b=[]): # NO!
print(b)
return b
ret = f(1)
ret.append(1)
ret.append(2)
# 当再调用f(1)时,预计打印为 []
f(1)
# 但是却为 [1,2]
これは、変数の型のピットデフォルトパラメータでは、そのようなデフォルトのパラメータを設定してくださいNoneです。
def f(a,b=None): # YES!
pass
3つの共有変数結合していないピット
時には、グローバル変数を共有するために複数の関数をしたいが、関数内のローカル変数を変更しようとしています。
i = 1
def f():
i+=1 #NO!
def g():
print(i)
これは、f関数が宣言されているに表示されなければならないi
グローバル変数として:
i = 1
def f():
global i # YES!
i+=1
速いピットのリストの4コピー
Pythonで*
迅速な複製要素を達成するためのアクションのリストを持ちます:
a = [1,3,5] * 3 # [1,3,5,1,3,5,1,3,5]
a[0] = 10 # [10, 2, 3, 1, 2, 3, 1, 2, 3]
このようなリストや辞書複合型としてリスト要素の場合:
a = [[1,3,5],[2,4]] * 3 # [[1, 3, 5], [2, 4], [1, 3, 5], [2, 4], [1, 3, 5], [2, 4]]
a[0][0] = 10 #
結果は、他の人があなたを驚かせるかもしれa[1[0]
10に変更することも、
[[10, 3, 5], [2, 4], [10, 3, 5], [2, 4], [10, 3, 5], [2, 4]]
化合物が、コピーされたオブジェクトに淡い参照、すなわちID([0])及びID([2])は、同じ家の番号であるため*です。あなたは深いコピーの効果を実現したい場合は、以下の操作を行います。
a = [[] for _ in range(3)]
削除されたピットの5リスト
リストで削除要素は、この要素は、リスト内の複数回繰り返してもよいです。
def del_item(lst,e):
return [lst.remove(i) for i in e if i==e] # NO!
2つだけが見つかった削除請求、この配列要素[1,3,3,3,5] 3を削除考えます。
del_item([1,3,3,3,5],3) # 结果:[1,3,5]
正しいアプローチ:
def del_item(lst,e):
d = dict(zip(range(len(lst)),lst)) # YES! 构造字典
return [v for k,v in d.items() if v!=e]
これらは、5つの共通ピットであるこれらのピットを避けることができ、ここで友人を見ることを望んで。