为什么坐标在此循环中不增加?

时间:2018-11-27 10:50:20

标签: python

有一个循环,其中从“ .txt”加载数字以尝试创建用于碰撞的图块网格,并且由于某些原因,即使counter1和counter2递增,每个单元仍给出相同的精确x和y坐标。这是源代码:

counter1 = 0
counter2 = 0
string = ''
with open('map.txt', 'r') as f:
    for line in f:
        for character in line:
            if character == '0':
                pass
            elif character == '1':
                environmentVector.append(environment.environment1)
                environmentVector[-1].x = counter1 * 32
                environmentVector[-1].y = counter2 * 32
            counter1 += 1
        counter1 = 0
        counter2 += 1

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的那样,您多次将同一对象附加到向量中。看下面的例子

base_list = []

test_list = []

for i in range(0,5):
    base_list.append(test_list)
    base_list[-1].append(i)

print(base_list)

您可能期望输出

[[0], [1], [2], [3], [4]]

但您实际上会得到

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

因为您每次都向base_list添加相同的列表,所以在base_list中的一个位置对其进行编辑将对所有列表进行编辑。

解决方案是每次创建一个新的environment.environment1对象。我无法告诉您如何在不知道该类是什么的情况下执行此操作,但是在上面的示例中,您会这样做;

for i in range(0,5):
    base_list.append(list())
    base_list[-1].append(i)