【发布时间】:2012-03-21 03:51:43
【问题描述】:
我想知道是否有更 Pythonic(和高效)的方式来执行以下操作:
MAX_SIZE = 100
nbr_elements = 10000
y = np.random.randint(1, MAX_SIZE, nbr_elements)
REPLACE_EVERY_Nth = 100
REPLACE_WITH = 120
c = 0
for index, item in enumerate(y):
c += 1
if (c % REPLACE_EVERY_Nth == 0):
y[index] = REPLACE_WITH
所以基本上我生成了一堆从 1 到MAX_SIZE-1 的数字,然后我想用REPLACE_WITH 替换每个REPLACE_EVERY_Nth 元素。这工作正常,但我想它可以不使用enumerate 以某种方式完成?
我在想这样的事情(我知道这是错误的,因为我用 y 的索引替换了原来的 y):
y = map(lambda x: REPLACE_WITH if not x%REPLACE_EVERY_Nth else x, range(len(y)))
有没有办法对索引进行取模但替换值?
【问题讨论】:
-
你不能从 1 开始,然后按 100(或 N)计数吗?