Comment obtenir la longueur d'une liste de listes en python

Donc, si j'ai une liste appelée myList, j'utilise len (myList) pour trouver le nombre d'éléments dans cette liste. Bien. Mais comment puis-je trouver le nombre de listes dans une liste?

text = open("filetest.txt", "r")
myLines = text.readlines()
numLines=len(myLines)
print numLines

Le fichier texte ci-dessus utilise 3 lignes de 4 éléments séparés par des virgules. La variable numLines s'imprime comme '4' et non '3'. Ainsi, len (myLines) renvoie le nombre d'éléments dans chaque liste et non la longueur de la liste des listes.

Quand j'imprime myLines [0] , j'obtiens la première liste, myLines [1] la deuxième liste, etc. Mais len (myLines) ne pas me montrer le nombre de listes, qui devrait être le même que le «nombre de lignes».

J'ai besoin de déterminer combien de lignes sont en cours de lecture du fichier.

10
Dans votre code, vous avez une liste de lignes (chaînes). pas une liste de listes. Et python comptera heureusement les lignes vides ... Avez-vous vérifié pour vous assurer que vous n'avez aucune ligne vide?
ajouté l'auteur mgilson, source
len (myLines) vous donnera le nombre d'objets dans cette liste, qu'il s'agisse de listes, de dicts ou de chaînes.
ajouté l'auteur jramirez, source
Python ne divisera pas automatiquement le texte lu d'un fichier par des virgules. Utilisez le module csv si vous le souhaitez.
ajouté l'auteur Martijn Pieters, source
Si le fichier texte utilisé comporte 3 lignes, len (myLines) sera 3 quel que soit le contenu de chacune. Peut-être avez-vous une ligne vide à la fin du fichier. Une autre chose à essayer est d'utiliser open ("filetest.txt", "rt") car certaines plates-formes ont plusieurs caractères à la fin de chaque ligne d'un fichier texte qui pourrait confondre readlines() .
ajouté l'auteur martineau, source
Juste print myLines et la raison sera claire.
ajouté l'auteur Mark Tolonen, source
Votre code fonctionne absolument bien. Donnez-nous le fichier tel quel.
ajouté l'auteur tMJ, source

4 Réponses

Cela enregistre les données dans une liste de listes.

text = open("filetest.txt", "r")
data = [ ]
for line in text:
    data.append( line.strip().split() )

print "number of lines ", len(data)
print "number of columns ", len(data[0])

print "element in first row column two ", data[0][1]
16
ajouté

"Le fichier texte ci-dessus utilise 3 lignes de 4 éléments séparées par des virgules La variable numLines affiche" 4 "et non 3. Ainsi, len (myLines) renvoie le nombre d'éléments dans chaque liste et non la longueur de liste des listes. "

On dirait que vous lisez en .csv avec 3 lignes et 4 colonnes. Si c'est le cas, vous pouvez trouver le nombre de lignes et de lignes en utilisant la méthode .split ():

text = open("filetest.txt", "r").read()
myRows = text.split("\n")      #this method tells Python to split your filetest object each time it encounters a line break 
print len(myRows)              #will tell you how many rows you have
for row in myRows:
  myColumns = row.split(",")   #this method will consider each of your rows one at a time. For each of those rows, it will split that row each time it encounters a comma.  
  print len(myColumns)         #will tell you, for each of your rows, how many columns that row contains
1
ajouté

Si le nom de votre liste est listlen , tapez simplement len (listlen) . Cela retournera la taille de votre liste dans le python.

0
ajouté

La méthode len() renvoie le nombre d'éléments dans la liste.

 list1, list2 = [123, 'xyz', 'zara'], [456, 'abc']
    print "First list length : ", len(list1)
    print "Second list length : ", len(list2)

Lorsque nous courons au-dessus du programme, il produit le résultat suivant -

Première longueur de la liste: 3 Deuxième longueur de la liste: 2

0
ajouté