for sublistas in matriz:
for espacios in matriz:
ran = random.choice([p_vivo, p_muerto])
matriz.append(ran)
我正在尝试使用带有2个随机选择的矩阵:p_muerto或p_vivo 问题是,循环永远不会结束。我认为这是因为它不断覆盖矩阵的元素,所以它会无限期地继续下去。
我该怎么办?
答案 0 :(得分:1)
是的,发生了无限循环,因为您正在修改添加新元素的原始矩阵。
您可以创建该矩阵的副本并对复制的矩阵进行操作 - 原件将保持安全且不会被修改。
如果您想使用原始矩阵进行操作 - 您只需循环复制即可。
答案 1 :(得分:1)
要遍历列表列表,您需要执行以下操作:
class Obj():
def __init__(self, midPoint=[0,0]):
self.midPoint = midPoint
obj1 = Obj(midPoint = [1,1])
obj2 = Obj(midPoint = [2,2])
obj3 = Obj(midPoint = [3,3])
obj4 = Obj(midPoint = [1,1])
obj5 = Obj(midPoint = [2,2])
l = [obj1, obj2, obj3, obj4, obj5]
list_no_duplicates = []
# determines if midpoint already exists in any object inside list_no_duplicates
def midpoint_exists(midpoint):
for obj in list_no_duplicates:
if obj.midPoint == midpoint:
return True
return False
def Delete_duplicates(list1):
for obj in list1:
# if there are no object with this midPoint, appends
if not midpoint_exists(obj.midPoint):
list_no_duplicates.append(obj)
Delete_duplicates(l)
print list_no_duplicates
如果你要追加循环中的列表,你应该循环复制。并且您不应该附加到顶级列表,您应该附加到子列表。或许你应该制作新的子列表并附加到他们身上。目前尚不清楚你想要的结果是什么。
for sublist in matriz:
for element in sublist:
这会将列表从15x15更改为15x30