Python in vs ==. Was soll in diesem Fall verwendet werden?

7

Ich mache einen AJAX Aufruf und übergebe die Variable pub , die 1 oder 0 sein könnte.

Als Anfänger möchte ich sicher sein, dass der Variablentyp, der hereinkommt, sicher ist. Ich weiß, dass ich leicht zu int() konvertieren kann und das Problem ist eigentlich nicht mit AJAX, aber es führte zu dieser Frage.

Mein Code:

%Vor%

Aber das obige ist nicht so pythonisch für mich, also habe ich es versucht:

%Vor%

Welcher der obigen Codes ist besser in Bezug auf:

  1. Leistung (Geschwindigkeit).
  2. Beste Praxis.
  3. Speicherverbrauch.
Yax 15.07.2015, 05:38
quelle

5 Antworten

12

Leistung : ist besser

%Vor%

Also, {} > or > [] > () basierend auf der Leistung.

Übung : in wird bevorzugt, da weniger eingegeben werden muss. (), [], {} basierend auf der Praxis gleich gut.

Speicher :

%Vor%

Also, {} > [] > () > or basiert auf Speicher

Obwohl nicht gefragt, gut zu wissen:

Funktionalität : Wertgleichheit und nicht Referenzgleichheit

in ist nur eine sequenzielle Überprüfung der Gleichheit == . So ähnlich. in verwendet == und nicht is . Was ich sagen möchte, ist dies:

%Vor%

So wird nicht wie folgt implementiert:

%Vor%

is gibt True zurück, wenn zwei Variablen auf dasselbe Objekt verweisen, == , wenn die Objekte, auf die sich die Variablen beziehen, gleich sind. in verwendet ==

    
sinhayash 15.07.2015, 05:53
quelle
7

Dieser Code ist besser

%Vor%

weil es etwas schneller ist, aber hauptsächlich, weil es nicht redundant ist . Die Variable pub erscheint nur einmal dort.

    
dlask 15.07.2015 05:50
quelle
3

Leistungsperformance in ist also besser:

%Vor%

Und pro Speicherplatz ist die if besser, da die Liste etwas mehr Speicher verwendet

%Vor%

Dies ist aufgrund der Tatsache, dass, wenn sogar leere Liste erstellt wird Speicherplatz benötigt

%Vor%

Ich weiß nichts über best practice aspect

Für mich wäre der pythonischste Weg, in zu verwenden, da dies die Tipparbeit reduziert

    
The6thSense 15.07.2015 05:51
quelle
1

1. Leistung:

%Vor%

2. Best Practice: Es ist gut, Programme auf eine pythonische Weise zu schreiben, die ich bevorzuge (Pub in [1, '1'])

3. Speichernutzung: Nummer 1 und String '1' wird immer in Python zwischengespeichert, Sie können den Refcount für diese Objekte überprüfen. Idealerweise wird es keinen zusätzlichen Speicher benötigen.

%Vor%

Wenn Sie eine Liste verwenden, die mehr Speicherplatz benötigt, um diese zwischengespeicherten Objekte zu beziehen. (Unten ist in 64-Bit-Typ)

%Vor%

Diese 88 Bytes Speicher werden Sie extra zuweisen als die andere Art zu tun.

Ich würde vorschlagen, mit zu gehen:

%Vor%     
gsb-eng 15.07.2015 06:47
quelle
0

Geschwindigkeit:
in ist schneller und viel.
Um es zu beweisen, hier ist der Code.

%Vor%

Ausgabe:

%Vor%

Im Raum: == ist eine ganze Menge besser.
in benötigt O (2) Leerzeichen, während == O (1) Leerzeichen benötigt.

Nach meiner Meinung ist das beste Verfahren in zu verwenden, da es viel schneller ist und eine Menge Tipparbeit erspart.

    
rrao 11.12.2016 14:27
quelle

Tags und Links