Python,列出定期差距

时间:2018-02-20 11:03:38

标签: python list

我想创建一个有常规间隙的python列表。我对如何做到这一点有一个大概的了解,但是有一个简短的方法可以做到这一点或内置函数来做到这一点。

假设我要创建一个从1到200的列表,间隙为50.列表将是[1,..,50,101,..,150],即从51到100和151到200的顺序是不在列表中。

def create_list_step(start,end,step):
     result = []
     current = start
     while current < end:
          smallinterval = current + step
          result = result + list(range(current, smallinterval))
          current = smallinterval + step
    return result

4 个答案:

答案 0 :(得分:1)

我认为没有内置功能,但可以使用range s的连接轻松完成:

final = list(range(1, 51)) + list(range(101, 151))

答案 1 :(得分:0)

一种方法是定义一个能够为你跳过间隙的函数。

from itertools import chain

def gappy(start, rng, n):
    return chain(*(list(range(2*i*rng+1, (2*i+1)*rng+1)) for i in range(n)))

list(gappy(1, 50, 3))

# [1, 2, 3, ..., 48, 49, 50, 101, 102, 103, ...,
#  148, 149, 150, 201, 202, 203, ..., 248, 249, 250]

答案 2 :(得分:0)

您可以使用列表推导:

start = 5
stop = 17
gap = 3

a = [x for x in range(start, stop + 1) if ((x - start) // gap) % 2 == 0]

答案 3 :(得分:0)

这是应该做的一行:

[i for i in range(200) if (i-1)/50%2==0] #Python 2.x
[i for i in range(200) if (i-1)//50%2==0] #Python 3.x