1

我试图找到一种基于两个列表的大小创建对象的方法。我必须为两个列表的每个索引组合创建一个对象,即如果两个列表的长度均为 3,则应创建和定义 9 个新对象。

列表的长度可能相当大,如果我不必使用 if 循环来遍历所有可能的组合,它会使脚本变得更好。

首先,我认为我可以做到以下几点:

for i in range(len(list1)):
    for j in range(len(list2):
        Name_of_Object+[i]+[j] = (object definition)

但这是不可能的,我收到以下错误:

SyntaxError: can't assign to operator

但是有没有一种基于列表索引创建对象的方法?

最好的,马丁

(我正在使用 Canopy 环境进行 python 编程。)

4

3 回答 3

1

为什么不在列表中定义这些对象,然后您可以访问单个变量作为 li[i][j]

li = []
for i in range(len(list1)):
    tempLi = []
    for j in range(len(list2)):
        tempLi.append((object definition))
    li.append(tempLi)
于 2013-09-11T06:09:06.580 回答
0

我们不能连接到一个运算符,但我们可以将它用作一个数组。那是

Name_of_Object[i][j] = (object definition)
于 2013-09-11T06:08:40.967 回答
0

exec也许你可以用一个声明来完成你的任务

exec("Name_of_Object{0}{1} = object declaration".format(i,j))

但我认为这不是一个好主意,因为除非您特别想要 Name_of_Object01 或 Name_of_Object02,否则您将无法在程序中进一步调用 exec 语句的对象...

例如,如果您需要在每次想要对它做某事时遍历您的实例,您将需要编写:

exec("Name_of_Object{0}{1}.method(...)".format(i,j))

所以我认为你应该使用多维数组

于 2013-09-11T07:48:12.560 回答