2

我正在制作一个读取电子表格的程序。对于每一列,我的程序创建该列每一行中所有值的列表。为了决定我需要多少个列表,我有一个变量 columnBound ,它是电子表格中列的总数。我如何制作一个程序,如果有 3 列,有时会创建 3 个列表,如果有 8 列,有时会创建 8 个列表?

例如,如果总是有 3 列,我知道我可以轻松地拥有 list1、list2、list3,并根据需要构建它们,但是如何让我的程序基于 columnBound 构建动态数量的列表?

就像我想要的

for x in range (0, columnBound):
    listx = [] 

我会有list1,list2,....一直到listx(或listcolumnBound)

我对编程非常陌生,并且会喜欢概念上的帮助,这是正确方向的一点。我不完全知道如何用谷歌搜索这个问题,因为它非常抽象。

谢谢!

额外信息:

我的程序将使用电子表格作为输入。每列包含 5 位参考编号,对应于特定的公司地址。然后,它将采用不同的电子表格,其中每一行都有一个参考代码,但需要在最后一列中插入一个地址。我将查询每个列表以查看它是否具有匹配的参考代码,并将相应的地址输入到电子表格中。有时我会有 5 个地址列,有时我可能有 8 个。我知道制作一个显式类型的程序(我专门创建列表 1-8,如果有 9 个地址列,第 9 个将被省略)是不好的实践。我想学习如何让我的程序适应有多少列。

4

6 回答 6

1

您可以使用列表列表:

例如:

[['col1','col2'],[1,2]]

这样,您可以拥有动态数量的列表。

于 2013-07-16T19:20:58.450 回答
1

您应该使用列表列表或列表字典。

于 2013-07-16T19:21:02.880 回答
1

列表列表(或者实际上是依次为您提供元组的生成器)是您将从csv模块接收的数据类型。这可能是您想要使用的。

请参阅:http ://docs.python.org/dev/library/csv

于 2013-07-16T19:26:10.380 回答
0

您可以创建列表列表。您可以使用 csv 提取每一行。

    rows=list()
    for x in range(0, columnBound):
       rows.append(extracted_rows_in_each_column)

输出将如下所示: rows=[[行列 #1 的值],[行列 #2 的值],.......]

 rows=[[values of rows col #1],[values of rows col #2],.......]
于 2013-07-16T20:13:50.273 回答
0

在您的情况下,我认为最好使用我的库 pyexcel 它将为您读取 excel 文件并为您提供统一数据矩阵中的数据。您还可以向数据矩阵添加自定义格式。然后像使用二维数组一样使用它。

假设您将这些数据保存在一个 excel 文件中

1   2   3
4   5   6
7   8   9

下面是显示如何随机访问单元格的示例代码:

>>> import pyexcel
>>> reader = pyexcel.Reader("example.xls")
>>> print reader[1][1]
5

这是它的使用教程

于 2014-10-15T20:28:37.943 回答
0

使用列表列表来完成此操作。这一行:

list = [[0]*3]*3 创建一个列表,其中包含对单个列表 [0,0,0] 的三个引用。

于 2013-07-16T19:23:12.470 回答