【发布时间】:2016-10-09 14:03:17
【问题描述】:
我有一个整数列表,我想对它进行扩充以包含当前整数以及它们的值分别移动了 +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。
【问题讨论】:
-
您的操作方式没有任何问题,除非在顺序不相关时我永远不会使用列表。 Set 在这里是正确的数据类型。
-
@zvone,你为什么要用一套?
-
@PadraicCunningham 因为 list 是一个有序的容器。这里不清楚数据的目的是什么,但是如果 OP 不关心顺序,那么可以合理地假设容器稍后将以一种使集合更合适的方式被搜索。我也有一种感觉,结果不欢迎重复。
标签: python list python-3.x numpy