Python3 combine_channels函数返回元组如何修改为列表格式
问题解决方法
问题根源
Python内置zip()函数迭代返回的每个元素都是元组类型,你原代码中直接将zip(*row_pairs)返回的元组存入了结果列表,才会出现输出中是(1, 2)而非预期[1, 2]的问题。
修改方案
只需在列表推导式中,将channel_combined用list()强制转为列表类型即可,修改后的完整代码如下:
def combine_channels(image): new_channel = [] for row_pairs in zip(*image): new_channel.append([list(channel_combined) for channel_combined in zip(*row_pairs)]) return new_channel
测试输入combine_channels([[[1]], [[2]]]),返回结果为[[[1, 2]]],符合预期。
如果你偏好更简洁的写法,也可以用嵌套列表推导式实现相同逻辑:
def combine_channels(image): return [[list(channel_combined) for channel_combined in zip(*row_pairs)] for row_pairs in zip(*image)]
内容的提问来源于stack exchange,提问作者Oney
相关产品推荐
相关产品推荐

