を避けlはforループは3 forループ
for obj in firstArray:
newListKeys.append(obj.key)
for key in anotherArray:
if key not in newListKeys:
soonToDelete.append(key)
for key in soonToDelete:
del anotherArray[key]
を避けlはforループは3 forループ
for obj in firstArray:
newListKeys.append(obj.key)
for key in anotherArray:
if key not in newListKeys:
soonToDelete.append(key)
for key in soonToDelete:
del anotherArray[key]
あなたはリストの内包表記を使用することができます
# This replaces the first for loop
newListKeys = [obj.key for obj in firstArray]
# This replaces the second and third loops
anotherArray = [item for item in anotherArray if item in newListKeys]
もう1つのライナーオプション:
anotherArray = [e for e in firstArray for key in anotherArray if e.key == key]
あなたはそうです。一定。 – lufte
について
anotherSet = set.intersection(set(obj.key for obj in firstArray), set(anotherArray))
がnewListKeys
とanotherArray
の間で共通しているユニークなキーのセットを返しますどのように。リストが必要な場合は、リストにキャストすることができます:anotherArray = list(set.intersection(newListKeys, set(anotherArray)))
。 anotherArray
の各キーのコピーを1つだけ返しますが、キーのリストであれば、重複することはできません。
あなたは何を達成しようとしていますか? 1つの配列内の他のキーに表示されないすべてのキーを削除しますか? – TemporalWolf
@ErnestAppiah、そうですね、それは残念です。 – ForceBru
最初の2行をobj.keys()に置き換えることができます –