2016-05-16 14 views
0

ich eine Liste von Zufallszahl innerhalb eines Bereichs generieren möge:Verzögerung der Auswertung von Listenelementen

from random import randint 

lower = 0 
upper = 20 
length = 10 

random_array = [randint(lower, upper) for _ in range(length)] 

Ich glaube nicht, es ist elegant und ich komme mit einer anderen Lösung:

random_array = [randint(lower, upper)] * length 

Aber es erzeugt eine Liste von identischen Ganzzahlen.

Es könnte sein, dass randint vor list ausgeführt wird.

Ich versuche randint mit lambda aufzuschieben:

random_array = [(lambda: randint(lower, upper))()] * length 

aber scheitern.

Also ich möchte wissen, ob es möglich ist, die Auswertung von Artikeln zu verzögern (randint in diesem Fall) und dann ausgelöst, sobald die Liste zusammengestellt ist?

+1

Wie ist das ein Duplikat? Das OP verlangt nicht, dass die Nummern eindeutig sind. – Selcuk

+0

@Selcuk Nein, tun sie nicht. – Wentao

+0

Das verknüpfte Duplikat stimmt nicht mit dem spezifischen Problem des Fragestellers überein. Dies kann nützlicher sein: http://stackoverflow.com/questions/240178/python-list-of-lists-changes-reflected-across-sublists-unexpectedly – JETM

Antwort

0
from random import randint 

lower = 0 
upper = 20 
length = 10 

random_array = list() 
for _ in range(length): 
    random_array.append(randint(lower, upper)) 
print random_array 
-1
random_array = map(lambda _: randint(lower, upper), range(length)) 
Verwandte Themen