Alors j'utilise la méthode de la chaîne Python pour combiner deux querySets (listes) dans Django comme ceci. Lorsque des données et des tweets sont deux listes distinctes. J'ai maintenant une liste "résultats" avec les données et les objets Tweet que je veux commandé dans cette mode. P> Quel est le meilleur moyen d'atteindre ce type de commande? J'ai essayé d'utiliser au hasard. Mais ce n'est pas ce que je veux. p> p>
3 Réponses :
Vous pouvez utiliser Utilisez itertools.chain.from_iterable code> et zip code>: iTERTOOL.IFIP code> Pour une solution efficace de mémoire. P> p>
AH, de_itétable code> est le moyen élégant d'aplatir la liste zippée que j'étais manquante.
@Oleg, pas si les listes sont très longues (ce qui est probable dans ce cas)
Depuis que nous inscrivons des alternatives inférieures, (v pour T dans zip (données, tweets) pour V dans T) code>
@ERIC, vous devriez poster cela comme une réponse distincte. Le vôtre est le plus lisible du lot. Et izip code> à la place de zip code> devrait prendre en charge les grandes listes d'entrée
@Oleg, pourquoi pensez-vous qu'il coupe la liste à cinq? Parce que l'analyse des tweets est généralement effectuée avec d'énormes jeux de données, ce qui est à l'illustration.
@alexis vous avez complètement raison, j'ai supprimé tous mes commentaires qu'ils peuvent confondre quelqu'un
Vous pouvez le faire de cette façon:
>>> result = [None]*(len(data)+len(tweets)) >>> result[::2] = data >>> result[1::2] = tweets
Voici une solution à l'aide d'itérateurs:
from itertools import izip result = (v for t in izip(data, tweets) for v in t)
C'est bien: il n'est pas évident que l'alternance des paires zippées ne suffit que l'aplatissement.
Je ne sais pas ce que vous voulez: 1. Résultats = [Data [0], Tweets [0], Data [1], Tweets [1], ...] ou 2. Résultats = [Données [0], Données [1], ..., données [n], tweets [0], ..., Tweets [n], données [0], données [1], ...]
Êtes-vous sûr que c'est le format de sortie que vous voulez?
zip (données, tweets) code> ne pas être plus utile ici?