Leistung reduziert: in besser
timeit.timeit("pub='1'; pub == 1 or pub == '1'")
0.07568907737731934
timeit.timeit("pub='1'; pub in[1, '1']")
0.04272890090942383
timeit.timeit("pub=1; pub == 1 or pub == '1'")
0.07502007484436035
timeit.timeit("pub=1; pub in[1, '1']")
0.07035684585571289
#other options
timeit.timeit("pub='1'; pub in (1,'1')")
0.04643988609313965
timeit.timeit("pub='1'; pub in {1,'1'}")
0.17076611518859863
timeit.timeit("pub=1; pub in (1,'1')")
0.047419071197509766
timeit.timeit("pub=1; pub in {1,'1'}")
0.1770930290222168
Also, {} > or > [] >()
basierend auf der Leistung.
Praxis: in
ist bevorzugt, da es weniger zu tippen ist.(), [], {}
gleich gut basierend auf der Praxis
Speicher:
sys.getsizeof([1,"1"])
88
sys.getsizeof("1",1)
38
#other options
sys.getsizeof(("1",1))
72
sys.getsizeof({"1",1})
232
So {} > [] >() > or
basierend auf Speicher
Obwohl nicht gefragt ,, gut zu wissen:
Funktionalität: Wertgleichheit und keine Referenzgleichheit
in
ist nur sequentielle Überprüfung Gleichheit ==
. So ähnlich. in
verwendet ==
und nicht is
. Was ich damit sagen will, ist dies:
>>> a = [1,2,3]
>>> b = [1,a]
>>> b
[1, [1, 2, 3]]
>>> 1 in b
True
>>> a in b
True
>>> [1,2,3] in b
True
So ist es nicht wie folgt umgesetzt:
>>> for i in b:
... print [1,2,3] is i
...
False
False
is
wird Wahr zurück, wenn zwei Variablen auf das gleiche Objekt zeigen, ==
wenn die Objekte auf die sich die Variablen beziehen, sind gleich. in
verwendet ==
eingeben Wie Sie machen ein Ajax-Aufruf, so dass es serialisiert wird, was bedeutet, dass es immer "1" ist. –
Warum haben Sie sowohl 2.7 als auch 3.x getaggt? – thefourtheye
basierend auf http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values Ich würde Pub in {1,1} oder Pub in (1, -1) –