写点什么

Python 代码阅读(第 50 篇):对列表间隔取元素

用户头像
Felix
关注
发布于: 刚刚
Python代码阅读(第50篇):对列表间隔取元素

Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码


本篇阅读的代码实现了在一个列表中每间隔n个数取一个元素的功能。


本篇阅读的代码片段来自于30-seconds-of-python

every_nth

def every_nth(lst, nth):  return lst[nth - 1::nth]
# EXAMPLESevery_nth([1, 2, 3, 4, 5, 6], 2) # [ 2, 4, 6 ]
复制代码


every_nth函数接收一个列表和间隔数nth,返回列表的取值结果。


函数使用列表切片的方式,获取原列表每间隔nth个元素取值的结果。


s[i:j:k]的形式是sij步长为k的切片。sij步长为k的切片被定义为所有满足0 <= n < (j-i)/k的索引号x = i + n*k的项组成的序列。 换句话说,索引号为i,i+k,i+2*k,i+3*k,以此类推,当达到j时停止 (但一定不包括j)。 当k为正值时,ij会被减至不大于len(s)。 当k为负值时,ij会被减至不大于len(s) - 1。 如果ij被省略或为None,它们会定义为列表一端可以达到的“终止”值 (是哪一端的终止值则取决于k的符号)。 请注意,k不可为零。 如果k 为None,则当作1处理。


因为列表的索引是从0开始的,所以第一个被取出的数的索引是nth-1。因为j被省略,所以会一直计算到列表的末端。我们使用一个不那么“恰好”的例子看一下:


>>> every_nth([1, 2, 3, 4, 5, 6, 7], 2) # [ 2, 4, 6 ][2, 4, 6]
复制代码


发布于: 刚刚阅读数: 2
用户头像

Felix

关注

没有看点,仅仅闲聊。欢迎关注“没看点” 2018.05.04 加入

欢迎关注个人公众号:没看点 个人主页:www.zhangfelix.com

评论

发布
暂无评论
Python代码阅读(第50篇):对列表间隔取元素