共通でPythonの基礎ピット

単一要素を含む1元基

作成された要素は、間違ってあり、その中タプルとしてPythonの引数の型の一部の機能、:
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
c = (5) # NO!
それは実際にあなたが要素の後にコンマを追加する必要があり、化粧素子5を作成します。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
c = (5,) # YES!

2デフォルトパラメータがnullに設定されています

容器の種類とは、nullに設定されている場合、関数の引数のデフォルト値が含まれています:
[Pythonの]  プレーンテキストビューは、 コードをコピー
01
02
03
04
05
06
07
08
09
10
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です。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
def f(a,b=None): # YES!
    pass

3つの共有変数結合していないピット

時には、グローバル変数を共有するために複数の関数をしたいが、関数内のローカル変数を変更しようとしています。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
3
4
5
6
i = 1
def f():
    i+=1 #NO!
     
def g():
    print(i)
これは、グローバル変数としてI F関数の宣言に表示されます。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
3
4
i = 1
def f():
    global i # YES!
    i+=1

速いピットのリストの4コピー

* Pythonと迅速な複製要素を達成するためのアクションのリストに:
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
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]
このようなリストや辞書複合型としてリスト要素の場合:
[Pythonの]  プレーンテキストビューは、 コードをコピー
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 #
結果はあなたを驚かせることができる、他の[1 [0] 10は、また、修飾され
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
[[10, 3, 5], [2, 4], [10, 3, 5], [2, 4], [10, 3, 5], [2, 4]]
化合物が、コピーされたオブジェクトに淡い参照、すなわちID([0])及びID([2])は、同じ家の番号であるため*です。あなたは深いコピーの効果を実現したい場合は、以下の操作を行います。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
a = [[] for _ in range(3)]

削除されたピットの5リスト

リストで削除要素は、この要素は、リスト内の複数回繰り返してもよいです。
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
3
4
5
def del_item(lst,e):
    return [lst.remove(i) for i in e if i==e] # NO!
考虑删除这个序列[1,3,3,3,5]中的元素3,结果发现只删除其中两个:
 
del_item([1,3,3,3,5],3) # 结果:[1,3,5]
正しいアプローチ:
[Pythonの]  プレーンテキストビューは、 コードをコピー
1
2
3
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つの共通ピットであるこれらのピットを避けることができ、ここで友人を見ることを望んで。
公開された157元の記事 ウォン称賛43 ビュー90000 +

おすすめ

転載: blog.csdn.net/qq_39581763/article/details/104213307