Je suis un débutant python et une des choses que j'essaye de faire est d'envelopper ma tête autour de la compréhension de la liste. Je peux voir que c'est une caractéristique assez puissante qui vaut la peine d'apprendre. Comment utiliser la compréhension de la liste afin que je puisse obtenir les résultats comme une série de listes dans une liste, plutôt qu'une série de Les tuples dans une liste? p> (Je me rends compte que les dictionnaires seraient probablement plus appropriés dans cette situation, mais j'essaie simplement de comprendre des listes un peu mieux). Merci! P> p>
5 Réponses :
Quelque chose comme ceci:
map(list, zip(cities, airports))
Ceci prend comme pour les performances de chaque: p> zip code> s de la sortie et convertit tous les tuples à des listes:
$ python -m timeit -c '[ [a, b] for a, b in zip(xrange(100), xrange(100)) ]'
10000 loops, best of 3: 68.3 usec per loop
$ python -m timeit -c 'map(list, zip(xrange(100), xrange(100)))'
10000 loops, best of 3: 75.4 usec per loop
$ python -m timeit -c '[ list(x) for x in zip(range(100), range(100)) ]'
10000 loops, best of 3: 99.9 usec per loop
Compréhension de la liste, sans aide de zip code>,
cartographique code> ou
itTools code>, impossible d'instituer une "boucle parallèle" sur plusieurs séquences - - Seules des boucles simples sur une séquence ou des "boucles" imbriquées "sur plusieurs. P>
Si vous vouliez le faire sans utiliser ZIP du tout, vous devez faire quelque chose comme ceci:
[ [cities[i],airports[i]] for i in xrange(min(len(cities), len(airports))) ]
D'autre part, utiliser une compréhension de la liste et une fermeture à glissière est tout aussi courte, et pour moi au moins, encore plus simple. Est-ce que vous savez comment savoir comment la performance se comparerait à la carte?
possible d'utiliser énumérer code>, aussi bien: