Python按索引合并多列表及报错排查(禁用map、zip)
报错原因排查
- 你贴出来的带方括号的
append写法本身是合法的:append()方法每次仅接收1个参数,你贴的代码里传入的是方括号包裹的单个子列表对象,只会传1个参数,根本不会触发这个报错。 - 这个报错的直接原因是你实际运行代码时漏写了包裹三个值的方括号,写成了
list.append(A[i], B[i], C[i])——这种写法等于直接给append塞了3个独立参数,完全不符合方法的参数要求,自然会抛错。 - 额外注意:不要拿
list当自定义变量名用,这是Python内置的列表类型名,随便赋值覆盖很容易引出莫名其妙的隐性bug。
符合约束的正确实现
按照要求不使用map、zip函数,索引对齐合并的可运行代码如下,特意做了长度兼容避免索引越界:
A = ['a','b','c'] B = [1,2,3] C = ['10','20','30'] result = [] # 取多个列表的最短长度作为遍历边界,避免某列表长度不一致时触发索引越界 # 如果你能100%确定所有待合并列表长度完全相等,直接写range(len(A))也可以 loop_count = min(len(A), len(B), len(C)) for idx in range(loop_count): # 先构造当前索引位的子列表,作为单个参数传入append current_item = [A[idx], B[idx], C[idx]] result.append(current_item)
运行后result的值就是期望的[['a', 1, '10'], ['b', 2, '20'], ['c', 3, '30']]。这里特意把每个索引位的子列表先赋值给变量再传入append,就是为了避免写代码时图快漏写方括号、直接传多个参数的低级错误,代码可读性也更高。
内容的提问来源于stack exchange,提问作者Programming Noob
相关产品推荐
相关产品推荐

