Python如何高效将普通列表转换为带计数的嵌套列表?
Python优雅转换列表为带序号的嵌套列表
当然有!你的for循环写法逻辑清晰、完全可行,但Python确实提供了更简洁、符合Pythonic风格的方案——用enumerate()函数搭配列表推导式就能轻松搞定。
enumerate()是Python内置的实用函数,它可以遍历可迭代对象(比如你的列表l1),同时返回元素的索引和元素本身。默认索引从0开始,不过我们可以通过start参数指定从1开始计数,刚好符合你需要的序号要求。
直接上最优实现代码:
l1 = ['a', 'b', 'c', 'd', 'e'] l2 = [[item, idx] for idx, item in enumerate(l1, start=1)]
运行这段代码后,l2就会得到你想要的[['a',1], ['b',2], ['c', 3], ['d',4], ['e',5]]。
这种写法的优势在于:
- 无需手动维护计数器变量
c,减少出错概率 - 代码更紧凑,可读性强,一眼就能明白是给每个元素添加从1开始的序号
- 列表推导式在Python中的执行效率比手动循环
append更高
如果想尝试另一种写法(虽然可读性稍弱),也可以用map()函数配合匿名lambda:
l2 = list(map(lambda pair: [pair[1], pair[0]+1], enumerate(l1)))
不过还是更推荐第一种列表推导式+enumerate的组合,既简洁又直观。
内容的提问来源于stack exchange,提问作者taga
相关产品推荐
相关产品推荐

