如何用Python双层循环列表推导式将嵌套列表按固定长度切分为元组
解法代码
my_list=[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5]] x = 5 res = [ [tuple(sublist[i:i+x]) for i in range(0, len(sublist), x)] for sublist in my_list ]
运行后输出和预期完全一致:
>>> res [[(1, 2, 3, 4, 5), (6, 7, 8, 9, 10), (11, 12, 13, 14, 15)], [(1, 2, 3, 4, 5), (6, 7, 8, 9, 10)], [(1, 2, 3, 4, 5)]]
逻辑说明
你之前写的单层列表推导式已经实现了单个列表按指定长度切分转元组的逻辑,现在要处理嵌套列表,只需要在外层再加一层遍历所有子列表的推导式即可。
列表推导式的嵌套顺序和普通for循环的书写顺序完全对应,你也可以先写普通嵌套循环验证逻辑,再转成推导式,二者运行结果完全相同:
res = [] x = 5 # 外层遍历嵌套列表中的每个子列表 for sublist in my_list: temp = [] # 内层对单个子列表做切分,逻辑和你之前的写法一致 for i in range(0, len(sublist), x): temp.append(tuple(sublist[i:i+x])) res.append(temp)
内容的提问来源于stack exchange,提问作者Real gamb
相关产品推荐
相关产品推荐

