如何将数组行元素按指定分隔符实现单行输出?
二维数组单行格式化输出修正方案
问题背景
拥有如下二维数组数据:
[[ 2.696000e+00 0.000000e+00 0.000000e+00 0.000000e+00] [ 2.577000e+00 0.000000e+00 0.000000e+00 0.000000e+00] [ 0.000000e+00 -2.560096e+03 0.000000e+00 0.000000e+00] ...
期望将每一行输出为:
2.696000e+00 & 0.000000e+00 & 0.000000e+00 & 0.000000e+00 // 2.577000e+00 & 0.000000e+00 & 0.000000e+00 & 0.000000e+00 // ...
但现有代码:
for k in range(1): for i in range(len(data[k])): print(data[k][i],'&') if i == len(data[k])-1: print(data[k][i],'//')
输出结果为每个元素单独换行:
2.696 & 0.0 & 0.0 & 0.0 & 0.0 //
修正方案
方案1:字符串拼接(最简洁)
直接将每行元素转为字符串,用&连接后添加结尾标记,一次性打印整行:
# 遍历所有行(若只需处理第一行,可改为for row in data[:1]:) for row in data: # 把每行元素转成字符串,用" & "连接,再加上结尾的// print(" & ".join(map(str, row)) + " //")
方案2:修改print的end参数(兼容原循环逻辑)
Python的print()默认会在结尾添加换行符\n,通过设置end参数控制输出结尾,让前几个元素不换行:
for k in range(1): # 保持原逻辑只处理第一行,若处理所有行改为range(len(data)) row = data[k] for i in range(len(row)): if i != len(row) - 1: # 前几个元素输出后加空格,不换行 print(row[i], '&', end=' ') else: # 最后一个元素输出后添加//并换行 print(row[i], '//')
方案3:先收集每行内容再打印
先把每行的元素和符号拼接成字符串,最后统一打印:
for k in range(1): line_parts = [] for num in data[k]: line_parts.append(f"{num}") # 用&连接所有元素,再加上// print(" & ".join(line_parts) + " //")
说明
原代码问题在于每次调用print()都会自动换行,导致每个元素单独占一行。上述方案要么通过控制end参数避免不必要的换行,要么先拼接整行内容再一次性打印,都能实现预期的单行输出效果。
内容的提问来源于stack exchange,提问作者Lyu
相关产品推荐
相关产品推荐

