替换while循环中的列表值

时间:2015-12-01 00:54:48

标签: list python-2.7 replace while-loop

所以我试图添加两个列表,一个名义列表和一个随机数列表,一起创建一个由正值组成的新列表。我的问题是我的随机数列表是从正态分布(random.normalvariate(0, SD))生成的,这意味着在对两个列表求和时偶尔会得到负值,这是我不想要的。

我尝试使用while循环来解决此问题,以检查每个项目中两个列表的总和是否创建负值,以及是否使用新的随机数替换随机数。但是,无论我如何调整它,我的代码似乎都没有替换这些值。这是我目前的尝试。

nominalList = [1,2,3,4,5]
randomList = []

for n in xrange(0, len(nominalList)):
    randomList.append(random.normalvariate(0, SD))

while nominalList[n] + randomList[n] < 0:
    randomList[n] = random.normalvariate(0, SD)

1 个答案:

答案 0 :(得分:0)

您需要再次迭代索引并重新分配任何不符合条件的索引:

import random
SD = 7

nominalList = [1,2,3,4,5]
randomList = [random.normalvariate(0, SD) for n in nominalList]

for i,n in enumerate(nominalList):
    while n + randomList[i] < 0:
        randomList[i] = random.normalvariate(0, SD)

或者另一个想法,只需缩进原始代码中的while

nominalList = [1,2,3,4,5]
randomList = []

for n in xrange(0, len(nominalList)):
    randomList.append(random.normalvariate(0, SD))

    while nominalList[n] + randomList[n] < 0:
        randomList[n] = random.normalvariate(0, SD)