如何将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
相关产品推荐
相关产品推荐

