第二列表中列表索引与整数的比较

时间:2014-02-26 13:55:15

标签: python list

我正在努力完成我的第一个Python程序(我刚开始在一个月左右开始上Python)。现在,我只允许使用标准库,但我也可以导入随机库。

我要做的是比较两个列表。一个是随机数列表(我已经想到了),第二个是1和0的列表。 1意味着第一个列表中的数字需要用新的随机数替换。 0意思是他们想要保留这个数字。

有人可以帮助我,通过它来解释他们的逻辑吗?我现在不知所措,非常感谢你能给我的任何帮助。

这是我到目前为止所拥有的:

def replaceValues(distList, indexList):
    for i in range (1,len(indexList)):
         if indexList[i] = int(1):

然后我有点失落。

谢谢!

1 个答案:

答案 0 :(得分:4)

使用enumerate。它允许您使用索引迭代列表:

import random

control_list = [1, 0, 1]  # Your 0's and 1's
numbers_list = [1, 2, 3]  # Your random numbers


for index, control in enumerate(control_list):
    if control == 0: 
        numbers_list[index] = random.random()

print numbers_list
# [1, 0.5932577738017294, 3]

请注意,这将替换numbers_list中的元素。如果这不合适,您可以创建一个新列表并使用zip,这样您就可以并行迭代两个列表:

import random

control_list = [1, 0, 1]
numbers_list = [1, 2, 3]

new_list = []
for control, number in zip(control_list, numbers_list):
    if control == 0:
        number = random.random()
    new_list.append(number)

print new_list
# [1, 0.46963935996528683, 3]

在一行中,使用列表理解:

l = [n if c == 1 else random.random() for n, c in zip(numbers_list, control_list)]
print l
# [1, 0.9579195229977218, 3]
相关问题