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

Python中使用if语句打印含字符串与整数的二维数组

解决二维数组混合类型的格式化输出问题

我明白你的需求——要处理包含字符串和整数的二维数组,得先判断每个元素的类型,避免给字符串用{:o}格式化导致报错。其实列表推导式完全可以做到单独检查每个元素,可能之前你没找到正确的写法,我来给你演示两种可行的方案:

方案一:嵌套列表推导式(简洁版)

这种方式既保持了列表推导式的简洁性,又能对每个元素做类型判断:

original_array = [['s', 9], ['abc', 64], ['x', 123]]
formatted_array = [
    [item if isinstance(item, str) else f"{item:o}" for item in row]
    for row in original_array
]
print(formatted_array)

这段代码会遍历原数组的每一行,再遍历行内的每个元素:如果是字符串就直接保留,是整数就用{:o}转成八进制字符串。输出结果会是:

[['s', '11'], ['abc', '100'], ['x', '173']]

方案二:嵌套循环(更直观,适合调试)

如果你觉得列表推导式可读性稍差,也可以用嵌套循环来逐个处理元素,逻辑更清晰:

original_array = [['s', 9], ['abc', 64], ['x', 123]]
formatted_array = []
for row in original_array:
    new_row = []
    for item in row:
        if isinstance(item, int):
            new_row.append(f"{item:o}")
        else:
            new_row.append(item)
    formatted_array.append(new_row)
print(formatted_array)

这个方案和上面的效果完全一样,只是把推导式展开成了循环,方便你在处理复杂逻辑时添加调试语句。

额外提示:打印成原数组风格格式

如果你想直接打印成和原数组结构一致的格式(而非转成字符串后的数组),可以用逐元素格式化打印的方式:

original_array = [['s', 9], ['abc', 64], ['x', 123]]
print("[", end="")
for i, row in enumerate(original_array):
    print("[", end="")
    for j, item in enumerate(row):
        output = f"'{item}'" if isinstance(item, str) else f"'{item:o}'"
        print(output, end="")
        if j != len(row)-1:
            print(", ", end="")
    print("]", end="")
    if i != len(original_array)-1:
        print(", ", end="")
print("]")

输出会是:

[['s', '11'], ['abc', '100'], ['x', '173']]

这样就能完美匹配你想要的输出格式啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:44:46