以有效的方式将列表元素转换为连续元素列表

时间:2018-03-16 09:28:00

标签: python list

我有一个基本列表[1,4,10],需要以有效的方式转换为基本列表中每个元素的连续元素的列表

示例:

  • 如果我需要连续2个号码,则[1,4,10]将为[1,2,4,5,10,11]
  • 如果连续3个数字,则[1,4,10]将为[1,2,3,4,5,6,10,11,12]

4 个答案:

答案 0 :(得分:1)

arr=[1,4,10]
con=3
[r + i for r in arr for i in range(con)]
# [1, 2, 3, 4, 5, 6, 10, 11, 12]

答案 1 :(得分:0)

这是一种方法。 itertools.chain消除了对显式嵌套循环的需要。

from itertools import chain

def consecutiver(lst, n=3):
    return list(chain.from_iterable(range(i, i+n) for i in lst))

res = consecutiver([1, 4, 10], 2)
# [1, 2, 4, 5, 10, 11]

res2 = consecutiver([1, 4, 10], 3)
# [1, 2, 3, 4, 5, 6, 10, 11, 12]

答案 2 :(得分:0)

这是一个班轮,假设列表是x,'连续'的数量是c:

reduce(lambda a, b: a + b, map(lambda x: range(x, x+c), x))

答案 3 :(得分:0)

a = [1,4,10]
k = 3 #no of consecutive 
x=[range(b,b+k) for b in a]
output = [m for d in x for m in d]