You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何修改代码将二维列表board中所有'1'移动到每列底部位置

Python实现二维列表每列'1'下沉到列底的代码修改方案

需求说明

将二维列表board中所有的'1'移动到每一列的最底部位置,示例如下:
输入参考:

board = [[" "," ","1"," "],
         [" "," ","1"," "],
         ["1","1"," "," "],
         ["1"," "," ","1"]]

预期输出:

[[" "," "," "," "],
 [" "," "," "," "],
 ["1"," ","1"," "],
 ["1","1","1","1"]] 

原代码问题分析

现有代码存在两个核心问题:

  1. 没有保留原二维列表的行列结构,直接把所有元素打平为一维列表处理
  2. 没有按列维度统计'1'的数量并单独处理每列,而是把所有'1'直接拼接在打平后的列表末尾,完全不符合按列下沉的要求

修改后的可运行代码

board = [[" "," ","1"," "],
         [" "," ","1"," "],
         ["1","1"," "," "],
         ["1"," "," ","1"]]

def sink_ones_to_col_bottom(board):
    row_num = len(board)
    if not row_num:
        return []
    col_num = len(board[0])
    # 先转置二维列表,把列转为行方便处理
    transposed_cols = list(zip(*board))
    processed_cols = []
    for col in transposed_cols:
        # 统计当前列的'1'总数
        one_cnt = col.count('1')
        # 构造新列:前面填充空格,末尾放对应数量的'1'
        new_col = [' ']*(row_num - one_cnt) + ['1']*one_cnt
        processed_cols.append(new_col)
    # 转置回原行列结构,将元组转为列表保证格式一致
    return [list(row) for row in zip(*processed_cols)]

# 输出结果
result = sink_ones_to_col_bottom(board)
print(result)

运行输出:

[[' ', ' ', ' ', ' '], [' ', ' ', ' ', ' '], ['1', ' ', '1', ' '], ['1', '1', '1', '1']]

完全匹配预期要求。

内容的提问来源于stack exchange,提问作者Joshua Bradley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:45:03