如何用Pythonic方式从另一列表的索引创建新列表?
解决方法:从列表索引生成排除首项的新列表
嘿,我来帮你搞定这个问题!你已经找对方向啦,enumerate()确实能帮你遍历列表的索引和对应值,不过针对你的场景,还有更直接的方式,我给你两种实现思路:
方法1:结合enumerate()和列表推导式
既然你提到了enumerate(),那咱们就先用它来实现。enumerate()会返回每个元素的**(索引, 值)**元组,我们只需要过滤掉索引为0的项,把剩下的索引收集起来就行:
list_1 = [11,10,7,0,3,5,8,1,4,6,9,2] new_list = [idx for idx, val in enumerate(list_1) if idx != 0] print(new_list) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
这里用列表推导式快速筛选,逻辑清晰,也符合你对enumerate()的使用需求。
方法2:直接用range()生成索引范围
其实你的需求本质上是生成从1到列表最后一个索引的连续整数,所以可以直接用range()来构造,这种方式更高效,不需要遍历原列表的元素:
list_1 = [11,10,7,0,3,5,8,1,4,6,9,2] new_list = list(range(1, len(list_1))) print(new_list) # 输出同样是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
因为len(list_1)是12,range(1, 12)会生成1到11的整数,转成列表就是你要的结果。
两种方法都能达到目的,如果你只是需要索引,方法2更简洁;如果后续还要用到原列表的元素,方法1的扩展性更强哦!
内容的提问来源于stack exchange,提问作者user7491985
相关产品推荐
相关产品推荐

