List 更改循环python3的列表
如您所见,列表将始终打印List 更改循环python3的列表,list,for-loop,python-3.x,List,For Loop,Python 3.x,如您所见,列表将始终打印“ a1a2a3永远不会'0'在for循环中,这是为什么 但是如果你打印a1它是'0',但是[a1,a2,a3]是,我认为你误解了变量的含义 当您创建列表“boardspace”时,您正在使用a1等当时包含的值创建它。然后将变量a1等重新指定为不同的值 该列表不包含a1或任何其他变量,而是字符串列表。就这些 编辑: 假设你有这样的东西: a1 = ' ' a2 = ' ' a3 = ' ' b1 = ' ' b2 = ' ' b3 = ' ' c1
“
a1
a2
a3
永远不会'0'
在for循环中,这是为什么
但是如果你打印
a1
它是'0'
,但是[a1,a2,a3]
是,
我认为你误解了变量的含义
当您创建列表“boardspace”时,您正在使用a1
等当时包含的值创建它。然后将变量a1
等重新指定为不同的值
该列表不包含a1
或任何其他变量,而是字符串列表。就这些
编辑:
假设你有这样的东西:
a1 = ' '
a2 = ' '
a3 = ' '
b1 = ' '
b2 = ' '
b3 = ' '
c1 = ' '
c2 = ' '
c3 = ' '
boardspace = [[a1,a2,a3],[b1,b2,b3],[c1,c2,c3],[a1,b1,c1],[a2,b2,c2],[a3,b3,c3],[a1,b2,c3],[a3,b2,c1]]
while x != 'a'
a1 = '0'
a2 = '0'
a3 = '0'
for a in baordspace:
if a[0]==a[1]==a[2]!= " "
x ='a'
如果希望对a
的更改反映在arr
中的两个子列表中,则需要执行以下两项操作之一:
arr
中的索引存储到单独的列表中(没有那么好)a = 1
b = 2
arr = [[a, b], [b, a]]
我用一些神奇的函数定义了一个类:
-构造函数\uuuu初始化\uuuuu
-\uuuu str\uuuuu
相当于str(obj)
obj.\uuuu str\uuuj()
-输出对象的表示。在本例中,我们只有一个值,因此\uuuu repr\uuuu
是一个足够的表示。它还使val
工作。有关更多信息,请参阅上一篇文章打印arr
这意味着对这些对象的任何更改都将按照您在问题中预期的方式进行。可能重复的请复制粘贴原始源代码,这一个有太多的打字错误该片段无助于理解完整的问题,打字错误是存在的,而循环可能永远不会开始。那么詹姆逊,你是说我必须做一个新的列表吗?这取决于你想做什么。最简单的方法是为每个变量创建对象。有关示例,请参见我的编辑。
class Tile:
def __init__(self, val):
self.val = val
def __repr__(self):
return self.val
def __str__(self):
return self.val
a = Tile(' ')
b = Tile(' ')
arr = [[a, b], [b, a]]
print arr # [[ , ], [ , ]]
a.val = '0'
print arr # [[0, ], [ , 0]]