如何创建一个连续数字的列表,其中每个数字重复 N 次,例如:
list = [0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]
另一个想法,无需任何其他套餐或金额:
[x//N for x in range((M+1)*N)]
其中
N
是重复次数,M
是重复的最大值。例如
N = 3
M = 5
[x//N for x in range((M+1)*N)]
产量
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
我的第一直觉是从 funcy 包中获得一些功能帮助。如果
N
是重复每个值的次数,而 M
是重复的最大值,那么你可以这样做
import funcy as fp
fp.flatten(fp.repeat(i, N) for i in range(M + 1))
这将返回一个生成器,因此要获取数组,您只需调用
list()
即可
sum([[i]*n for i in range(0,x)], [])
下面的代码是我能想到的最简单的版本。 它有点脏又长,但它完成了工作。
我认为这样更容易理解。
def mklist(s, n):
l = [] # An empty list that will contain the list of elements
# and their duplicates.
for i in range(s): # We iterate from 0 to s
for j in range(n): # and appending each element (i) to l n times.
l.append(i)
return l # Finally we return the list.
如果你运行代码……:
print mklist(10, 2)
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
print mklist(5, 3)
[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4
另一个版本更简洁,具有列表理解。 但是呃……我们必须对其进行排序。
def mklist2(s, n):
return sorted([l for l in range(s) * n])
运行该版本将给出以下结果。
print mklist2(5, 3)
原始:[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
排序:[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
emaildatabaseusa.com 推广您的电话营销和短信营销。您可以以便宜的价格购买我们的德国手机号码列表。您可以购买目标组织和个人的数据库。我们将为您提供免费的实验营销样本数据库。我们有来自世界不同国家的移动列表。