如何将列表元素依次插入嵌套列表对应子列表的首位?
嵌套列表元素插入实现
需求:将一个列表的元素依次插入到嵌套列表对应子列表的首位——第一个元素插入第一个子列表开头,第二个元素插入第二个子列表开头,以此类推。
示例代码(修正语法错误后)
# 原输入(修正语法错误) lst_of_lst = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] items = ['a','b','c','d'] # 期望输出 # [['a',1,2,3,4], ['b',5,6,7,8], ['c',9,10,11,12], ['d',13,14,15,16]]
实现方法
方法1:原地修改原嵌套列表
通过循环遍历索引,使用列表的insert()方法在子列表首位插入对应元素:
lst_of_lst = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] items = ['a','b','c','d'] for idx in range(len(lst_of_lst)): lst_of_lst[idx].insert(0, items[idx]) print(lst_of_lst)
方法2:生成新嵌套列表(不修改原列表)
使用列表推导式结合zip(),将每个元素与对应子列表拼接,生成新列表:
lst_of_lst = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] items = ['a','b','c','d'] new_lst_of_lst = [[item] + sublist for item, sublist in zip(items, lst_of_lst)] print(new_lst_of_lst)
注意事项
- 确保两个列表长度一致,否则
方法1会出现索引越界错误;方法2会自动以较短列表的长度为准,忽略超出部分的元素。 - 如果需要处理长度不一致的场景,可在
方法1中改用range(min(len(lst_of_lst), len(items)))控制循环范围。
内容的提问来源于stack exchange,提问作者Rajat Muzumdar
相关产品推荐
相关产品推荐

