List 替换while循环中的列表值

List 替换while循环中的列表值,list,python-2.7,replace,while-loop,List,Python 2.7,Replace,While Loop,所以我尝试添加两个列表,一个标称列表和一个随机数列表,一起创建一个由正值组成的新列表。我的问题是,我的随机数列表是从正态分布(random.normalvariate(0,SD))生成的,这意味着在对两个列表求和时偶尔会得到负值,这是我不想要的 我尝试使用while循环来解决这个问题,以检查每个项目的两个列表之和是否创建了负值,以及它是否用新的随机数替换了随机数。然而,无论我如何调整,我的代码似乎都不会替换这些值。这是我目前的尝试 nominalList = [1,2,3,4,5] random

所以我尝试添加两个列表,一个标称列表和一个随机数列表,一起创建一个由正值组成的新列表。我的问题是,我的随机数列表是从正态分布(
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)
nominalist=[1,2,3,4,5]
随机列表=[]
对于x范围内的n(0,len(名义值)):
randomList.append(random.normalvariate(0,SD))
当名义列表[n]+随机列表[n]<0时:
randomList[n]=random.normalvariate(0,SD)

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

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)
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)