En python, est-il une différence entre un appel clear()
et en attribuant {}
d'un dictionnaire? Si oui, quel est-il?
Exemple:
d = {"stuff":"things"}
d.clear() #this way
d = {} #vs this way
En python, est-il une différence entre un appel clear()
et en attribuant {}
d'un dictionnaire? Si oui, quel est-il?
Exemple:
d = {"stuff":"things"}
d.clear() #this way
d = {} #vs this way
Si vous avez une autre variable se référant également à la même dictionnaire, il y a une grande différence:
>>> d = {"stuff": "things"}
>>> d2 = d
>>> d = {}
>>> d2
{'stuff': 'things'}
>>> d = {"stuff": "things"}
>>> d2 = d
>>> d.clear()
>>> d2
{}
C'est parce que l'attribution d = {}
crée un nouveau dictionnaire vide et l'attribue à l' d
variable. Cela laisse d2
pointant vers le vieux dictionnaire avec des articles toujours en elle. Toutefois, d.clear()
efface le même dictionnaire que d
et d2
à la fois point.
En outre, les différences mentionnées dans d'autres réponses, il y a également une différence de vitesse. d = {} est plus de deux fois plus vite:
python -m timeit -s "d = {}" "for i in xrange(500000): d.clear()"
10 loops, best of 3: 127 msec per loop
python -m timeit -s "d = {}" "for i in xrange(500000): d = {}"
10 loops, best of 3: 53.6 msec per loop
En plus de @odano 's réponse, il semble à l'aide de d.clear()
est plus rapide si vous souhaitez effacer le dict de nombreuses fois.
import timeit
p1 = '''
d = {}
for i in xrange(1000):
d[i] = i * i
for j in xrange(100):
d = {}
for i in xrange(1000):
d[i] = i * i
'''
p2 = '''
d = {}
for i in xrange(1000):
d[i] = i * i
for j in xrange(100):
d.clear()
for i in xrange(1000):
d[i] = i * i
'''
print timeit.timeit(p1, number=1000)
print timeit.timeit(p2, number=1000)
Le résultat est:
20.0367929935
19.6444659233
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.