我在读一个.csv文件到一个列表,它附加一个空列表,我用下面的代码来做这个。在
with open('Scores.csv', 'r') as scores:
reader = csv.reader(scores)
tscores = [[str(e) for e in r] for r in reader]
它会正确地创建嵌套列表的列表,但在每一行读入后附加一个空列表,如下所示:
^{pr2}$我相信它将\n
作为一个空字符串读取,这就是为什么我会得到它,所以我尝试使用以下方法删除空列表:
tscores = [tscores.remove(x) for x in tscores if x]
它确实删除空的嵌套列表,但它将包含数据的所有其他嵌套列表设置为None
,即[None, None]
。我修改为:
tscores = [tscores.remove(x) for x in tscores if []]
它会完全清除所有嵌套的列表。在
如何在不附加空列表的情况下读取具有相同输出(嵌套列表列表)的文件,或者如何在读入后删除所有空列表?在
为了完整起见:在这种情况下,我认为列表理解不是最简单的解决方案。在这里函数式编程是有意义的,imho。在
要“自动”迭代列表并筛选特定元素,可以使用内置函数filter:
列表
a
的每个元素x
被传递给lambda
函数,当且仅当满足条件len(x) > 0
时,返回的列表只包含一个a
元素。因此,返回一个没有嵌套空列表的列表。在我想你想做的是
它只列出了tscores中的非空列表
除了user2990008's answer之外,您首先不能创建空列表:
相关问题 更多 >
编程相关推荐