Ich möchte n Proben (ohne Ersatz) aus dem Produkt von zwei Listen erhalten. Wie unten gezeigt, berechne ich momentan das gesamte Produkt und entwerfe dann daraus, aber dies wird für lange Listen rechenintensiv. Gibt es eine Möglichkeit, diesen Prozess zu optimieren? Das heißt, dass nicht das gesamte Produkt berechnet werden muss, sondern eine effektivere Probenahme erforderlich ist.Schnellste Möglichkeit, aus Produkt von zwei Listen zu probieren
Aktuelle naiver Ansatz (fälschlicherweise mit Ersatz Abtasten, wie weiter unten angegeben):
from itertools import product
from random import choice
def get_sample(a,b,n):
"""return n samples from the product a and b"""
D = list(product(a,b))
D = [choice(D) for _ in range(n)]
return D
Sie haben eine Probe mit Ersatz geschrieben - das heißt, der Code kann zweimal das gleiche Element auswählen. Ist das Absicht? 'random.sample' ist eine Probe ohne Ersatz. – user2357112
Es sei denn, es gibt etwas, das Ihr Code tun soll, aber gerade nicht tut, das ist das gleiche wie das Sampling von 'a' und das Sampling von' b' 'n'. Im Moment besteht keine Notwendigkeit, 'D' zu materialisieren. – DSM
Bei Ersatz: Das ist ein wirklich guter Punkt. Entschuldigung, ich wollte ohne Ersatz probieren. @DSM: Das ist eigentlich eine sehr gute Idee und scheint im Einklang zu sein, was andere vorschlagen – Unayko