如何在Python中获取列表的长度

18

那么,如果我有一个名为myList的列表,我使用len(myList)来找到该列表中元素的数量。很好。但是如何找到列表中列表的数量?

text = open("filetest.txt", "r")
myLines = text.readlines()
numLines=len(myLines)
print numLines
上述文本文件有3行,每行由逗号分隔的4个元素组成。变量numLines打印输出为'4'而不是'3'。因此,len(myLines)返回的是每个列表中元素的数量,而不是列表的长度。
当我打印myLines[0]时,我得到第一个列表,myLines[1]得到第二个列表,以此类推。但是len(myLines)并没有显示给我列表的数量,这应该与“行数”相同。
我需要确定从文件中读取了多少行。

5
在您的代码中,您有一系列行(字符串),而不是列表。而且Python可以愉快地计算空行... 您检查了是否有空行吗?请确保没有任何空行。 - mgilson
len(myLines)将会给你该列表中元素的数量,无论它们是列表、字典还是字符串。 - jramirez
你的代码完全正常。按原样给我们文件即可。 - tmj
3
只需 print myLines,原因将变得明确。 - Mark Tolonen
2
Python不会自动将从文件中读取的文本根据逗号拆分。如果您想要这样做,请使用“csv”模块。 - Martijn Pieters
如果使用的文本文件有3行,则len(myLines)将为3,无论每行的内容如何。也许您在文件末尾有一行空白行。另一个尝试的方法是使用open("filetest.txt", "rt"),因为某些平台在文本文件的每行末尾具有多个字符,这可能会混淆readlines() - martineau
5个回答

25

这将数据保存在一个列表的列表中。

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]

3

您可以使用 functools.reduce 来完成此操作:

from functools import reduce 

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [], [1, 2]]
print(reduce(lambda count, l: count + len(l), a, 0))
# result is 11

1
上述文本文件有3行,每行有4个元素,以逗号分隔。变量numLines的值为“4”而不是“3”。因此,len(myLines)返回的是每个列表中元素的数量,而不是列表的长度。
听起来你正在读取一个有3行和4列的csv文件。如果是这样,你可以使用.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

-2

方法 len() 返回列表中的元素数。

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

当我们运行上述程序时,它会产生以下结果−
第一个列表长度:3 第二个列表长度:2

-2
如果你的列表名称是listlen,那么只需输入len(listlen)即可。这将返回Python中列表的大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接