x
in der Schleife entspricht einem tuple
.
Eine andere Syntax ist for a,b in zip
, aber hier ist es einfacher, ein Tupel zu haben, das an join
übergeben wird. Entspricht in der Schleife zu:
s1.append("".join(x))
, die hier etwas übertrieben ist, wenn Sie mich fragen, da Sie nur 2 Werte join
haben. Eine weitere Möglichkeit wäre:
for a,b in zip(s1, characters(b)):
s1.append(a+b)
und für das Verständnis:
s = [a+b for a,b in zip(s, characters(b))]
join
ist nicht schneller in diesem Fall, da wir nur zwei Begriffe haben ohne Trennzeichen hinzufügen und join
ist ein Funktionsaufruf.
EDIT: jetzt bin ich neugierig, und ich bin benching dies:
l = ["foo","bar","spam","egg""hello","world"]
start = time.time()
for _ in range(10000000):
s = [a+b for a,b in zip(l,l)]
end = time.time()
print("elapsed {}".format(end-start))
läuft in 14.80
Sekunden.
jetzt ersetzen durch:
s = ["".join(x) for x in zip(l,l)]
und es läuft in 17.75
Sekunden. Also einmal +
gewinnt ... join
ist hilfreich, um den quadratischen Effekt der Addition Strings zu vermeiden, das heißt, wenn es mehr als 2 Strings zu fassen ...
Sie join
hier nicht verwenden, verwenden Sie es, wenn Sie mehr als 2 Werte zu verbinden und/oder ein Trennzeichen dazwischen.
Chargen selbst ist eine Liste, enthält mehrere 2-dim np.array. Nehmen wir an, len (Chargen) = 11, Chargen [0] .shape = (64, 27) –