Python中如何从整数列表按每三个一组提取元素?
按3个元素一组提取Python列表中的物品尺寸
你写的代码存在两个核心问题:
- 遍历
packages时,each是列表里的单个数值(比如2400、1000),对数字执行[3:]切片操作会直接触发类型错误 - 逻辑上没有实现“每3个元素为一组”的拆分逻辑
下面是几种可行的解决方法:
方法1:利用已知的物品数量x拆分
既然已知x是物品总数,直接循环x次,每次计算对应组的起始索引:
packages = [2400, 1000, 800, 2400, 1000, 1000, 2400, 1000, 1000] x = 3 # 已知的物品数量 for i in range(x): start_idx = i * 3 l, w, h = packages[start_idx:start_idx+3] # 这里可对l、w、h做后续处理,比如打印 print(f"物品{i+1}: 长{l}, 宽{w}, 高{h}")
方法2:通过列表长度自动分组(无需提前知道x)
如果不想依赖x的值,直接根据列表长度和步长3遍历索引:
packages = [2400, 1000, 800, 2400, 1000, 1000, 2400, 1000, 1000] for i in range(0, len(packages), 3): l, w, h = packages[i:i+3] print(f"物品{(i//3)+1}: 长{l}, 宽{w}, 高{h}")
方法3:用生成器封装分组逻辑(复用性更强)
把按3个元素分组的逻辑封装成生成器,方便在多个场景复用:
def split_into_threes(lst): for i in range(0, len(lst), 3): yield lst[i:i+3] packages = [2400, 1000, 800, 2400, 1000, 1000, 2400, 1000, 1000] for idx, (l, w, h) in enumerate(split_into_threes(packages), 1): print(f"物品{idx}: 长{l}, 宽{w}, 高{h}")
内容的提问来源于stack exchange,提问作者shongololo
相关产品推荐
相关产品推荐

