Python列表拼接报错:如何将ID列表元素添加至学生子列表首位?
解决列表拼接的类型错误问题
嘿,我来帮你搞定这个问题~
首先说你遇到的unsupported operand type错误原因:你尝试把整数(ID[i]的值,比如1、2)和列表(student[i],比如['Jack','Fishing'])用+拼接,Python根本不知道怎么处理这种不同类型的操作,所以直接报错了。另外你代码里还有个小问题:循环里把student变量直接赋值成了单个拼接后的元素,最后只会得到最后一组的结果,而不是完整的二维列表。
下面给你两种靠谱的解决方案:
方法1:直接修改原student列表
用列表的insert方法,把每个ID插到对应子列表的首位,简单直观:
ID = [1,2,3] student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']] for i in range(len(student)): # insert(0, 元素) 表示把元素插入到列表的第0个位置(也就是最前面) student[i].insert(0, ID[i]) print(student) # 输出:[[1, 'Jack', 'Fishing'], [2, 'Alice', 'Reading'], [3, 'Mun', 'Football']]
方法2:生成新列表(不修改原数据)
如果不想改动原来的student列表,用列表推导式结合zip函数会更简洁优雅,还能避免意外修改原数据:
ID = [1,2,3] student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']] # 用zip把ID和student的对应元素配对,再把ID转成单元素列表后拼接 new_student = [[id_num] + sub_list for id_num, sub_list in zip(ID, student)] print(new_student) # 输出和上面完全一致
这里的关键是[id_num]——把单个整数转成了只有一个元素的列表,这样就能和子列表用+正常拼接啦。
内容的提问来源于stack exchange,提问作者clink
相关产品推荐
相关产品推荐

