如何用纯Python实现数组的逆时针循环输出(从9到5)
实现3x3数组从指定起点逆时针遍历到目标元素
首先要注意:你用{}定义的是集合,集合是无序的,无法保证元素的位置顺序,必须改成二维列表才能对应你描述的3行3列结构:
# 正确的二维列表结构,对应你给出的3行3列数组 arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
你需要的遍历顺序9 6 3 2 1 4 7 8 5,对应二维数组的坐标(行/列索引从0开始)路径是:(2,2) → (1,2) → (0,2) → (0,1) → (0,0) → (1,0) → (2,0) → (2,1) → (1,1),可以分阶段实现遍历:
# 定义正确的二维数组 arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] result = [] # 阶段1:最后一列从下到上(9,6,3) for row in reversed(range(3)): result.append(arr[row][2]) # 阶段2:第一行从右到左(2,1) for col in reversed(range(2)): result.append(arr[0][col]) # 阶段3:第一列从上到下(4,7) for row in range(1, 3): result.append(arr[row][0]) # 阶段4:第三行从左到右取8,再加上中间的5 result.append(arr[2][1]) result.append(arr[1][1]) # 按要求格式输出 print(' '.join(map(str, result)))
运行这段代码会输出:9 6 3 2 1 4 7 8 5,完全符合你的需求。
你原来的代码存在两个问题:一是用集合导致元素顺序不可控,二是仅简单反转列表,没有按照指定的逆时针路径遍历,因此无法得到预期结果。
内容的提问来源于stack exchange,提问作者Jethy11
相关产品推荐
相关产品推荐

