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

如何将Python数组处理代码浓缩为单行并完善else分支?

单行实现数组元素翻倍处理

给定数组:arry = [[111,2],[3,4],9],需要将以下循环逻辑浓缩为单行代码:

for index,item in enumerate(arry):
    if isinstance(item, list):
        for index2,item2 in enumerate(item):
            item[index2] = item2 * 2
    else:
        arry[index] = item * 2
print(arry)

你尝试的代码 print([[x*2 for x in y if isinstance(y,list)] for y in arry]) 仅处理了列表类型的元素,缺失了非列表元素的翻倍逻辑。要补全else分支,需将条件判断逻辑嵌入外层列表推导式,正确的单行写法如下:

print([[x*2 for x in y] if isinstance(y, list) else y*2 for y in arry])

核心说明:

  • 外层遍历数组中的每个元素 y,通过 isinstance(y, list) 判断元素类型
  • 若元素是列表,用内层列表推导式遍历子列表的每个元素并乘2;若为非列表元素,直接将元素乘2
  • 原代码中 isinstance(item, list or np) 的写法有误,or 无法实现多类型判断,若需支持numpy数组,应修改为 isinstance(item, (list, np.ndarray))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:12:37