2016-07-13 10 views
0

hier verwendet, ist die Frage:Inline Ausdruck für und wenn Schleifen

input = array([ 0. , 0.5, 1. , 1.5]) 

Erforderliche Leistung: jeder Wert > 1 sollte 1

array([ 0. , 0.5, 1. , 1]) 

Mein aktuelles Programm

import numpy as np 

input = np.arange(0,2,0.5);#array([ 0. , 0.5, 1. , 1.5]) 

for i in np.arange(0, np.size(input)): 
    if input[i] > 1: 
     input[i] = 1 

eingestellt werden Was ist die Kurzform für diese einfache Operation:

dummy3 =[if i> 1: xxxxxx , for i in input] 
or 
output = [if (for i in input) > 1: return 1 ] 

Antwort

0
output = [1 if i > 1 else i for i in input] 

Es heißt list comprehension

Dieses eine neue Liste erstellen, die (vom Konzept her) wie folgt füllen:

output = [] 
for i in input: 
    if i > 1: 
     output.append(1) 
    else: 
     output.append(i) 

Wie in den Kommentaren erwähnt, wenn Sie numpy und ändern möchten das ursprüngliche Array, das Sie tun können:

input[input>1]=1 
+0

Code nur beantworten? Geben Sie * einige * Erklärungen an. – Li357

+0

Gerade hinzugefügt einige Link –

+0

Danke Ohad. Kann ich fragen, warum 1 am ersten erscheint? Wenn ich es entferne, gibt es Syntaxfehler :( Got es, es ist zu sagen, die Ausgabe von If-Schleife, wenn die Bedingung von i> 1 verfolgt wird. Ich versuche, einen möglichen Link von Python zu finden, in dem Sie zeigten diese Art von Codierungsgewohnheiten. Jedenfalls löste es mein Problem. – learner123