FC的注册很坑 发表于 2020-11-4 10:05:12

对enumerate对象切片

本帖最后由 FC的注册很坑 于 2020-11-4 14:40 编辑

用enumerate()返回了一个enumerate object, 然后我想切片截取这个enumerate object,怎么处理比较优雅美观呢?

举个栗子,对于列表['a','b','c','d','e'],执行enumerate(['a','b','c','d','e'],start=10),得到enumerate object:[(10,'a'),(11,'b'),(12,'c'),(13,'d'),(14,'e')]
现在我想取出序号为11-13的,返回对象依旧是enumerate object:[(11,'b'),(12,'c'),(13,'d')]

当然,写个循环,如果index in 把值存在一个新列表里,在对新列表enumerate,start=11,可以实现目的。
但我觉得这样实现不够优雅,求问大佬们,有没有更优雅简短,让人眼前一亮的写法来实现这个目的呢?{:10_254:}

suchocolate 发表于 2020-11-4 10:15:39

所以你的代码呢?

笨鸟学飞 发表于 2020-11-4 10:29:54

本帖最后由 笨鸟学飞 于 2020-11-4 12:31 编辑

=======试试=============
temp = enumerate(['a','b','c','d','e'],start=10)
temp2 = temp

冬雪雪冬 发表于 2020-11-4 10:57:59

没太明白,是这个意思吗?
>>> a = list(enumerate(['a','b','c','d','e'],start=10))
>>> a
[(11, 'b'), (12, 'c'), (13, 'd'), (14, 'e')]

阿奇_o 发表于 2020-11-4 11:37:21

本帖最后由 阿奇_o 于 2020-11-4 11:48 编辑

---我理解错了,已删,2333--

altf11 发表于 2020-11-4 11:41:32

掐头去尾取中间呗

_, *middle, _ = enumerate(['a','b','c','d','e'], start=10)
print(middle)

FC的注册很坑 发表于 2020-11-4 14:36:12

笨鸟学飞 发表于 2020-11-4 10:29
=======试试=============

会报错的

FC的注册很坑 发表于 2020-11-4 14:37:50

冬雪雪冬 发表于 2020-11-4 10:57
没太明白,是这个意思吗?

这么做类型不对了,我希望切片后的输出仍然是enumerate object,而不是形似的list

FC的注册很坑 发表于 2020-11-4 14:40:00

altf11 发表于 2020-11-4 11:41
掐头去尾取中间呗

输出类型不对,并且我这只是举个例子,是要截取任意一段而不是取中间。
不过这个写法我第一次见,学到了{:10_275:}
页: [1]
查看完整版本: 对enumerate对象切片