如何将列表拆分为多个含3个元素的子列表?(含9元素实例)
拆分列表为固定长度子列表的几种实现方式
嘿,这个需求在日常编码里太常见了!针对你给出的列表,我给你分享几种Python下的实现方案,都能完美得到你想要的结果:
方法一:列表推导式+切片(最直观易懂)
这是我平时最常用的方法,代码简洁还容易理解。核心思路是利用Python的切片特性,按步长3遍历原列表,每次截取3个元素的子列表:
original_list = ["a", 1, 2, "b", 1, 2, "c", 1, 2] split_lists = [original_list[i:i+3] for i in range(0, len(original_list), 3)] print(split_lists) # 输出:[['a', 1, 2], ['b', 1, 2], ['c', 1, 2]]
解释一下:range(0, len(original_list), 3)会生成0、3、6这几个索引,每次用i:i+3截取从i开始的3个元素,刚好把原列表分成3组。
方法二:利用itertools工具库(更优雅的标准库方案)
如果你喜欢用标准库的工具,可以试试itertools里的技巧,这种方式在处理大型列表时效率也不错:
import itertools original_list = ["a", 1, 2, "b", 1, 2, "c", 1, 2] # 这里用zip配合迭代器分组,因为原列表长度刚好是3的倍数,zip完全适用 split_lists = [list(group) for group in zip(*[iter(original_list)]*3)] print(split_lists) # 输出和上面一致
原理小科普:iter(original_list)把列表转成迭代器,[iter(original_list)]*3其实是创建了3个指向同一个迭代器的引用,zip每次从这3个迭代器里各取一个元素,相当于把迭代器里的元素按顺序每3个打包成一组,最后转成列表就得到了目标结果。
方法三:手动循环(适合新手理解底层逻辑)
如果你想搞清楚分组的底层过程,手动循环的方式最清晰:
original_list = ["a", 1, 2, "b", 1, 2, "c", 1, 2] split_lists = [] temp_group = [] for item in original_list: temp_group.append(item) # 当临时组满3个元素时,加入结果列表并清空临时组 if len(temp_group) == 3: split_lists.append(temp_group) temp_group = [] # 注意:如果原列表长度不是3的倍数,最后temp_group可能还有剩余元素,这里可以根据需求处理 print(split_lists)
这种方式一步步展示了分组的过程,适合刚学Python的朋友理解。
以上三种方法都能满足你的需求,你可以根据自己的场景和习惯选择~
内容的提问来源于stack exchange,提问作者Check_mate
相关产品推荐
相关产品推荐

