理解2D数组:Python生成3×8随机二维列表代码末尾row=""的作用
代码问题解答
你编写的生成元素为1-9随机数的3×8二维列表代码中,循环末尾的row = ""作用是重置单行字符串缓存,避免多行输出内容拼接错乱。
完整待解析代码
import random #create 3 by 8 2D list rows = 3 cols = 8 #create a pre-initialised 2D List my2DList = [[0]*cols for i in range(rows)] #using nested loop insert random number between 1 and 9 to pre-initialised 2D list for x in range(rows): for y in range(cols): my2DList[x][y] = random.randint(1,9) #remove the last square bracket and the comma row = "" for x in range(rows): for y in range(cols): row = row + str(my2DList[x][y]) + "," row = row[:-1] print(row) row = ""
核心逻辑与row = ""作用说明
- 代码前半部分完成随机数二维列表的初始化与赋值:先导入随机数库,定义行列参数,预初始化固定大小的二维列表,再通过双层嵌套循环给每个位置填入1-9的随机整数。
- 后半段代码负责逐行格式化打印列表内容:
- 循环开始前先定义空字符串
row,作为单行内容的临时拼接缓存 - 外层循环按行遍历二维列表,内层循环逐一把当前行的元素转成字符串、拼接分隔逗号后追加到
row缓存中 - 单行列遍历完成后,通过
row[:-1]切片切掉行尾多余的逗号,再打印格式化好的当前行 - 你疑惑的末尾
row = "",作用是把已经打印完成的当前行缓存清空,给下一轮外层循环拼接下一行内容留出干净的初始空字符串。如果删掉这行语句,下一轮循环拼接新行元素时,会直接在上一行已经存在的字符串后面追加内容,最终打印出的第二行、第三行会携带前面所有行的内容,完全不符合逐行输出的预期。
- 循环开始前先定义空字符串
举个直观的反例:如果删掉这行重置语句,第一行打印完
1,2,3,4,5,6,7,8后,row变量还存着这串内容,第二行循环时会继续在后面拼接第二行的元素,最终第二行打印出来会是1,2,3,4,5,6,7,89,8,7,6,5,4,3,2这类错乱的内容。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

