web-dev-qa-db-fra.com

Comment accéder à une colonne d’une liste de listes dans python

J'ai un tableau 2D dans python modélisé par une liste de listes et je veux extraire la colonne. J'ai fait une recherche rapide et j'ai trouvé un moyen d'utiliser des tableaux numpy. Le problème est que Je ne veux pas utiliser numpy , je ne veux donc pas convertir ma liste de listes en un tableau numpy, puis utiliser la syntaxe [:, 1]. J'ai essayé de l'utiliser sur une liste de listes normale, mais une erreur s'est produite, de sorte que ce n'est pas possible. Je demande la même chose pour une liste de listes sans devoir parcourir chaque élément (Dans les tableaux numpy, il est plus rapide d'accéder à une colonne. utilisant la syntaxe [:, 1] plutôt qu’itéré sur les éléments du tableau).

J'ai trouvé ceci lien mais encore une fois, cela suggère de parcourir les éléments sans raccourci.

Merci d'avance.

16
Oussama Boussif

La compréhension de liste est votre ami lorsque vous travaillez avec des listes de listes:

In [111]: alist
Out[111]: 
[[0, 1, 2, 3, 4, 5],
 [6, 7, 8, 9, 10, 11],
 [12, 13, 14, 15, 16, 17],
 [18, 19, 20, 21, 22, 23]]
In [112]: [row[1] for row in alist]
Out[112]: [1, 7, 13, 19]

Il existe également un "idiome" pratique pour transposer une liste imbriquée, transformant "colonnes" en "lignes":

In [113]: tlist = list(Zip(*alist))
In [114]: tlist
Out[114]: 
[(0, 6, 12, 18),
 (1, 7, 13, 19),
 (2, 8, 14, 20),
 (3, 9, 15, 21),
 (4, 10, 16, 22),
 (5, 11, 17, 23)]
In [115]: tlist[1]
Out[115]: (1, 7, 13, 19)
28
hpaulj

Vous pouvez transposer votre liste imbriquée (c'est-à-dire transformer vos "colonnes" en "lignes"): https://stackoverflow.com/a/21444360/7306999

2
Xukrao