如何让Python数组ass的每个子数组生成从0开始的连续整数序列?
二维数组子数组的连续序列转换实现
需求说明
给定二维数组:
ass = [[8, 9],[0, 1, 2, 3],[3, 4, 5, 6, 7],[2, 3, 4, 9]]
需对每个子数组执行如下处理:
- 若子数组以0开头,直接保留原数组;
- 若子数组不以0开头,替换为从0开始到该子数组最大值的连续整数序列。
实现代码(Python)
ass = [[8, 9],[0, 1, 2, 3],[3, 4, 5, 6, 7],[2, 3, 4, 9]] processed_array = [] for sub in ass: # 判断子数组是否以0起始 if sub[0] == 0: processed_array.append(sub.copy()) else: # 获取子数组最大值,生成0到最大值的连续序列 max_num = max(sub) processed_sub = list(range(max_num + 1)) processed_array.append(processed_sub) # 输出处理后的数组 print(processed_array)
代码解释
- 遍历子数组:循环遍历原二维数组中的每个子数组;
- 起始判断:检查子数组的第一个元素是否为0,是则复制原数组加入结果(避免引用修改问题);
- 生成连续序列:若子数组不以0开头,先取子数组的最大值,利用
range()生成从0到最大值的连续整数(range左闭右开,因此需max_num + 1),转成列表后加入结果。
运行结果
执行代码后输出:
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
额外注意
- 若输入中存在空的子数组,需额外添加判断逻辑(如跳过或按需求生成对应序列);
- 使用
sub.copy()而非直接append(sub),是为了避免后续修改原数组时影响结果列表中的元素。
内容的提问来源于stack exchange,提问作者Agustin
相关产品推荐
相关产品推荐

