2016-12-10 5 views
0

私はPython3を使って作業していますが、リストの理解が常に安全であるかどうかは疑問でした。例えばリストの理解は常に安全ですか?

mylist = ["string1", "string2", "foo", "bar"] 
# I want to remove all items with "string" substring: 
pattern_to_rm = "string" 
mylist = [ item for item in mylist if pattern_to_rm not in item ] 
# print(mylist) = ["foo", "bar"] 

(反復しながら、私は入力リストのサイズを変更していたように)私はこの方法でいくつかの問題を持つことができますか?コピーなどを作らなければならないのですか? mylistは決して巨大なリストにはなりませんが、非常に重要なデータが含まれています。

ご意見やご提案は高く評価されます。

答えて

2

このコードは、反復処理中はリストサイズを変更しません。フィルタリングしたアイテムから新しいリストを作成し、mylistの参照を新しいリストに再割り当てします。これは安全で、コピーなどを作る必要はありません。

+0

この回答と重要な情報をありがとう! – glihm