为什么此代码会生成列表列表?

时间:2018-01-12 16:22:15

标签: python python-3.x csv import

我有一个功能:

def csvToList( filename ):
    with open(filename, 'r') as fp:
        reader = csv.reader(fp)
        myList = list(reader)
    return myList

并将其命名为:

fruitList = csvToList('fruit.csv')

fruit.csv的内容是:

apple,orange,kiwi,tomato

fruitList的值是列表列表:

[['apple', 'orange', 'kiwi', 'tomato']]

为什么这段代码会生成一个列表列表而不仅仅是一个简单的" flat"列表,像这样:

['apple', 'orange', 'kiwi', 'tomato']

1 个答案:

答案 0 :(得分:2)

读者从CSV文件中生成。请参阅documentation

  

从csv文件读取的每一行都作为字符串列表返回。

这里的文件只包含1行,这并不重要; list(reader)生成一个所有行的列表,即0,1或2000万。因此,只有一行的文件会为您提供一个包含该行的列表。

如果您只想要一行,请使用next() function迭代一步:

def csvToList( filename ):
    with open(filename, 'r') as fp:
        reader = csv.reader(fp)
        return next(reader, [])

next(reader, [])告诉函数返回一个空列表,如果reader根本没有产生任何内容。