0

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

任何建议表示赞赏,

4

2 回答 2

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)]
于 2013-10-04T19:54:09.287 回答
0

从教程:

以下列表推导将转置行和列:

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

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

于 2013-10-04T19:56:02.077 回答