将移位的整数添加到列表中

时间:2016-10-09 14:03:17

标签: python list python-3.x numpy

我有一个整数列表,我想要膨胀以包含当前整数,并将它们的值移动+1和-1。

例如,如果我有:

l1 = [3, 9, 15]

我希望结果是(顺序无关紧要):

l2 = [2, 3, 4, 8, 9, 10, 14, 15, 16]

我可以通过这样做来实现它:

l1 = [3, 9, 15]
l2 = l1[:]
l2.extend([i-1 for i in l1])
l2.extend([i+1 for i in l1])

然而,是否有更短/更有效的方式来执行此操作(如果合适,使用numpy)?

请注意,我还希望“通胀”能够不对称地工作,并且增加了2个以上的值,例如-3,-2和-1。

3 个答案:

答案 0 :(得分:3)

这个怎么样:

l1 = [3, 9, 15]
l2 = [i+j for i in l1 for j in (-1, 0, 1)]

print (l2)

给出:

[2, 3, 4, 8, 9, 10, 14, 15, 16]

答案 1 :(得分:0)

您可以将列表理解与range()一起使用为:

>>> [item + i for item in l1 for i in range(-1, 2)]
[2, 3, 4, 8, 9, 10, 14, 15, 16]

答案 2 :(得分:0)

numpy就是这样的

value=1
p = np.array([3, 9, 15])
p = np.append(p,[[[i+value,i-value] for i in p]])

输出已排序:

[2, 3, 4, 8, 9, 10, 14, 15, 16]

但你希望价值2显示在例如 3 [1,3,5]或[1,2,3,4,5]中?

如果你想第二个选项是这样的

value=2
p = np.array([3, 9, 15])
p = np.append(p,[[[i+range(1,value+1),i-range(1,value+1)] for i in p]])

输出排序:

[1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17]