python列表中的不连续切片
|
我正在寻找一种有效的方法来实现这一目标,我认为这是一种类似于切片的操作:
>>> mylist = range(100)
>>>magicslicer(mylist, 10, 20)
[0,1,2,3,4,5,6,7,8,9,30,31,32,33,34,35,36,37,38,39,60,61,62,63......,97,98,99]
这个想法是:切片可获取10个元素,然后跳过20个元素,然后获取下一个10,然后跳过下一个20,依此类推。
我认为,如果可能的话,我不应该使用循环,因为使用切片的原因(我想)是在单个操作中有效地执行“提取”。
谢谢阅读。
没有找到相关结果
已邀请:
8 个回复
响摔衅幸
(2.7 / 3.1中的新功能)很好地支持像这样的用例,尤其是当与
结合使用时:
Python 2.7计时(相对于Sven的显式列表理解):
Python 3.2计时(也相对于Sven的显式列表理解):
可以看出,相对于2.7中的内联列表理解而言,它没有太大的区别,但是通过避免隐式嵌套范围的开销,在3.2中有很大帮助。 如果目标是遍历结果序列而不是将其转化为完全实现的列表,则在2.7中也可以看到类似的区别:
对于特别长的模式,可以将模式表达式中的列表替换为
这样的表达式,这样就不必在内存中完全创建它。
bab
我认为您无法避免循环。 编辑:因为这被标记为“性能”,所以这里与
的模数解决方案比较:
久坡
暑袜眠退
恋裂
缉康怪
但我得到列表的列表:(
吐兄
结果
括宠
是另一种方式。但是,随着列表大小的增加,这可能会很慢。 在同一行上的功能