Python中lists = list(zip(*reader))代码的作用是什么?
代码
lists = list(zip(*reader))的作用解析 这行代码的核心是把CSV文件的「行数据结构」转成「列数据结构」,拆解来看:
首先,
csv.reader(file)返回的是一个行迭代器,每次迭代会输出CSV里的一行内容,格式是包含该行所有列值的列表。比如你的CSV有N行M列,reader迭代出来的就是N个长度为M的列表,每个列表对应一行数据。接着,
*reader是Python的解包操作:它会把reader迭代出的所有行(也就是N个列表),作为独立的参数传递给zip()函数。然后,
zip()函数的作用是把传入的多个可迭代对象中位置对应的元素打包成元组。这里传入的是N个行列表,zip()就会把所有行的第0个元素打包成一个元组(对应原CSV的第1列),所有行的第1个元素打包成另一个元组(对应原CSV的第2列)……以此类推,最终得到M个元组,每个元组对应原CSV的一列数据。最后,
list(...)把zip()返回的迭代器转换成列表,所以lists里的每个元素就是原CSV的一整列数据。
结合你后面的代码:循环lists时,每个row其实是原CSV的一列,row[0]就是这一列的第1行数据,row[697]是这一列的第698行数据。
内容的提问来源于stack exchange,提问作者AP - 12SK 866744 John Fraser S
相关产品推荐
相关产品推荐

