我想创建一个有常规间隙的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
答案 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