如何按指定的规则有效地生成列表?
长度为15的列表的最终结果应如下所示:
rules_power = 2
n1 = 20
n1_step = 2
n2 = 40
n2_step = 4
n3 = 60
n3_step = 8
n4 = 80
n4_step = 16
"步骤"规则永远是某种东西的力量。在这个例子中是2的幂。
所以,让我们说它写成:
df.replace
我们如何有效地生成这样的列表?
答案 0 :(得分:1)
由于您提到步骤规则始终是权力,因此有一条规则可以找到每个元素的起始位置(第一次出现)。
[20,40,20,60,20,40,20,80,20,40,20,60,20,40,20]
0 1 3 7
如您所见,每个新元素(20, 40, 60, 80)
首先显示在(2 ** i - 1)
的位置。知道了这一点,就可以使用索引和步骤轻松填充空列表。
length = 15
lst = [0] * length # better use comprehension
for i in xrange(2 ** 0 - 1, length, n1_step):
lst[i] = n1
for i in xrange(2 ** 1 - 1, length, n2_step):
lst[i] = n2
for i in xrange(2 ** 2 - 1, length, n3_step):
lst[i] = n3
for i in xrange(2 ** 3 - 1, length, n4_step):
lst[i] = n4
print lst
将电源替换为其他情况,并使用print
,xrange
替换python 3。
如果将值和步骤存储在列表中,则可以使用两个嵌套的for循环执行此过程,无论有多少规则。
这个的复杂性是O(2n), therefore n
,应该足够了,但是因为我不知道原来的问题,我不能给更多。