x
dans la boucle correspond à un tuple
.
Une autre syntaxe est for a,b in zip
mais ici, il est plus simple d'avoir un tuple à passer à join
. Équivalent dans votre boucle:
s1.append("".join(x))
qui est légèrement exagéré ici si vous me demandez, puisque vous avez seulement deux valeurs à join
. Une autre façon serait:
for a,b in zip(s1, characters(b)):
s1.append(a+b)
et pour la compréhension:
s = [a+b for a,b in zip(s, characters(b))]
join
n'est pas plus rapide dans ce cas, puisque nous avons seulement 2 termes ajouter sans séparateur et join
est un appel de fonction.
EDIT: maintenant je suis curieux, et je benching ceci:
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))
fonctionne en 14.80
secondes.
remplacer maintenant par:
s = ["".join(x) for x in zip(l,l)]
et il fonctionne en 17.75
secondes. Donc, pour une fois +
gagne ... join
est utile pour éviter l'effet quadratique des chaînes sommateurs, qui est s'il y a plus de 2 cordes pour résumer ...
Ne pas utiliser join
ici, l'utiliser lorsque vous avez plus de 2 valeurs à joindre et/ou un séparateur entre.
lots lui-même est une liste, contient plusieurs 2-dim np.array. Disons que len (lots) = 11, lots [0] .shape = (64, 27) –