首页 > 编程语言 > 详细

wtfpython阅读笔记

时间:2019-04-02 00:40:24      阅读:163      评论:0      收藏:0      [点我收藏+]

A tic-tac-toe where X wins in the first attempt!/一蹴即至!

# 我们先初始化一个变量row
row = [""]*3 #row i[‘‘, ‘‘, ‘‘]
# 并创建一个变量board
board = [row]*3

输出结果:

>>> board
[[‘‘, ‘‘, ‘‘], [‘‘, ‘‘, ‘‘], [‘‘, ‘‘, ‘‘]]
>>> board[0]
[‘‘, ‘‘, ‘‘]
>>> board[0][0]
‘‘
>>> board[0][0] = "X"
>>> board
[[X, ‘‘, ‘‘], [X, ‘‘, ‘‘], [X, ‘‘, ‘‘]]

当我们初始化 row 变量时, 下面这张图展示了内存中的情况:

技术分享图片

而当通过对 row 做乘法来初始化 board 时, 内存中的情况则如下图所示 :(每个元素 board[0]board[1] 和 board[2] 都和 row 一样引用了同一列表.)

 技术分享图片

我们可以通过不使用变量 row 生成 board 来避免这种情况:

>>> board = [[‘‘]*3 for _ in range(3)]
>>> board[0][0] = "X"
>>> board
[[X, ‘‘, ‘‘], [‘‘, ‘‘, ‘‘], [‘‘, ‘‘, ‘‘]]

还可以利用迭代新建一个列表来避免:

>>> board = [] 
>>> for i in range(3): 
>>>     row=[_] * 3 
>>>     board.append(row) 
>>> board 
[[_, _, _], [_, _, _], [_, _, _]] 
>>> board[2][0] = X 
>>> board  
[[_, _, _], [_, _, _], [X, _, _]]

 

wtfpython阅读笔记

原文:https://www.cnblogs.com/wjw2018/p/10640105.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!