列表循环分组异常求助:最后一组数据无法添加问题排查
列表分组异常排查
问题背景
初始列表:
['28/02/2025', '16/03/2025', '16', '14', 'directos', '1.093.026', '29/10/2024', '25/11/2024', '27', '26', 'con', '1.333.784', '28/02/2025', '16/03/2025', '16', '14', 'directos', '1.444.026', '29/10/2024', '25/11/2024', '27', '29', 'con', '1.283.784']
期望分组结果:
[['28/02/2025', '29/10/2024', '28/02/2025', '29/10/2024'], ['16/03/2025', '25/11/2024', '16/03/2025', '25/11/2024'], ['16', '27', '16', '27'], ['14', '26', '14', '29'], ['directos', 'con', 'directos', 'con'], ['1.093.026', '1.333.784', '1.444.026', '1.283.784']]
用户编写的Python代码:
listota = ['28/02/2025', '16/03/2025', '16', '14', 'directos', '1.093.026', '29/10/2024', '25/11/2024', '27', '26', 'con', '1.333.784', '28/02/2025', '16/03/2025', '16', '14', 'directos', '1.444.026', '29/10/2024', '25/11/2024', '27', '29', 'con', '1.283.784'] p = 0 listas = [[] for _ in range(6)] for i, elemento in enumerate(listota): if p > 4: p = 0 else: listas[p].append(elemento) p += 1
执行后错误结果:
[['28/02/2025', '29/10/2024', '28/02/2025', '29/10/2024'], ['16/03/2025', '25/11/2024', '16/03/2025', '25/11/2024'], ['16', '27', '16', '27'], ['14', '26', '14', '29'], ['directos', 'con', 'directos', 'con'], []]
问题原因
代码逻辑错误:当p等于5时(对应最后一个子列表的索引),会触发if p>4的条件,直接将p重置为0,但没有把当前元素添加到最后一个子列表,导致所有本该进入第6组的元素全部被跳过,最终第6组为空。
比如初始列表中第6个元素(1.093.026,索引5),此时p=5,进入if分支,p被重置为0,但这个元素没有被append到listas[5],直接跳过了后续操作。
修正方案
调整逻辑:先将元素添加到对应分组,再更新p的值,当p达到6时重置为0(因为分组索引是0-5,共6组)。
修正后的代码:
listota = ['28/02/2025', '16/03/2025', '16', '14', 'directos', '1.093.026', '29/10/2024', '25/11/2024', '27', '26', 'con', '1.333.784', '28/02/2025', '16/03/2025', '16', '14', 'directos', '1.444.026', '29/10/2024', '25/11/2024', '27', '29', 'con', '1.283.784'] p = 0 listas = [[] for _ in range(6)] for elemento in listota: listas[p].append(elemento) p += 1 if p == 6: p = 0 print(listas)
执行后将得到期望的分组结果。
内容的提问来源于stack exchange,提问作者cd91
相关产品推荐
相关产品推荐

