2016-04-08 10 views
-2

Ok, also ich habe im Moment Python-Code, der so etwas wie dies funktioniert:prüfen, ob eine Zahl nicht in Bereich in Python

if plug in range(1, 5): 
    print "The number spider has disappeared down the plughole" 

Aber was ich will eigentlich überprüfen tun, wenn die Zahl ist nicht in Reichweite. Ich habe gegoogelt und mir die Python-Dokumente angesehen, aber ich kann nichts finden. Irgendwelche Ideen?

Weitere Angaben: Wenn dieser Code ausgeführt wird:

if not plug in range(1, 5): 
    print "The number spider has disappeared down the plughole" 

ich die folgende Fehlermeldung erhalten:

Traceback (most recent call last): 
    File "python", line 33, in <module> 
IndexError: list assignment index out of range 

ich auch versucht:

if plug not in range(1,5): 
    print "The number spider has disappeared down the plughole" 

, die die gleichen Fehler zurückgegeben.

+7

'nicht in Reichweite erraten (1, 5)'? – vaultah

+0

ja, im Grunde –

+4

Haben Sie es versucht? – vaultah

Antwort

7

Wenn Ihr Bereich eine step von eins hat, es ist leistungsmäßig viel schneller zu bedienen:

if 1 <= plug < 5: 

als es diezu verwenden wäreVerfahren von anderen vorgeschlagen:

if plug not in range(1, 5) 

Beweis:

>>> import timeit 
>>> timeit.timeit('1 <= plug < 5', setup='plug=3') # plug in range 
0.053391717400628654 
>>> timeit.timeit('1 <= plug < 5', setup='plug=12') # plug not in range 
0.05137874743129345 
>>> timeit.timeit('plug not in r', setup='plug=3; r=range(1, 5)') # plug in range 
0.11037584743321105 
>>> timeit.timeit('plug not in r', setup='plug=12; r=range(1, 5)') # plug not in range 
0.05579263413291358 

Und dies berücksichtigt nicht einmal die Zeit, auf die Schaffung der range verbrachte nehmen.

+0

Ist es immer schneller für die Leistung, oder gibt es andere abhängige Faktoren, die die Dinge plausibel beeinflussen könnten? –

+1

@PeterDavidCarter Ich kann nichts versprechen, aber soweit ich es mir vorstellen kann, ist es immer schneller, es so zu machen. Vielleicht, wenn Sie mit mehreren Variablen spielen, um sicherzustellen, dass sie alle außerhalb des Bereichs liegen ... Im Allgemeinen sollte 'range()' für Zeiten verwendet werden, in denen Sie alle Zahlen innerhalb eines Bereichs verwenden müssen. In diesem Szenario benötigen Sie nur die Anfangs- und Endpunkte. –

+0

Ich bin irgendwie neugierig, aber wäre es möglich, den Compiler-Code für Javascript zu sehen, um zu sehen, warum es für mich schneller ist? Ich bin sicher, du hast Recht, ich würde nur daran interessiert sein, mehr zu erfahren, ist alles. Alle Javascript-Bibliotheken würde ich wahrscheinlich nur auf Github finden, aber JS selbst ... Ich wäre daran interessiert, Dinge auf einer niedrigeren Ebene zu sehen, denke ich ... –

0
if not plug in range(1,5): 
    #bla 
+0

Ich habe 'Plug not in range()' gemacht. Aber dieser Weg scheint auch nicht zu funktionieren. Hhhmmmmm ... –

+0

@PeterDavidCarter 'is' sucht nach Identität. Während Python * meistens * wie Englisch liest, ist es eigentlich nicht Englisch;) –

+0

habe ich es mit und ohne das versucht ... –

1

Verwendung:

if plug not in range(1,5): 
    print "The number spider has disappeared down the plughole" 

Es wird angegeben Linie drucken, wenn variable Stecker ist außerhalb des Bereichs 1 bis 5

+0

Komisch, das erste Mal, als ich diesen Code ausgeführt habe, hat es nicht funktioniert. Danach hat es funktioniert. Wie bizarr. –

0

Dies scheint Arbeit auch:

if not 2 < 3 < 4: 
    print('3 is not between 2 and 4') # which it is, and you will not see this 

if not 2 < 10 < 4: 
    print('10 is not between 2 and 4') 

genaue Antwort auf die ursprüngliche Frage if not 1 <= plug < 5: würde ich

Verwandte Themen