如何在python中删除二维列表中的空列?

时间:2013-10-04 19:48:39

标签: python

我的python脚本将格式化的Excel电子表格导入到二维中 名单。空列可以出现在随机索引中,我希望删除所有这些索引。 这样做的最佳方式是什么?

感谢任何建议,

2 个答案:

答案 0 :(得分:4)

转置数组,使内部列表成为列,删除空的内部列表,然后再次转置它:

data = zip(*data)
data = [x for x in data if any(x)]
data = zip(*data)

如果将行转换为元组是个问题,请将最后一行替换为以下内容:

data = [list(row) for row in zip(*data)]

这假设您的内部列表是行而不是列,如果您的内部列表已经代表一列,那么您可以执行以下操作(不需要转置):

data = [x for x in data if any(x)]

答案 1 :(得分:0)

从教程:

以下列表理解将转置行和列:

[[row[i] for row in matrix] for i in range(lenOfEachRow)]

一个想法是转置它,线性检查所有0的每一行,删除该行(只需使用delete [indexOfRow]然后将其转置回来。