我正在努力完成我的第一个Python程序(我刚开始在一个月左右开始上Python)。现在,我只允许使用标准库,但我也可以导入随机库。
我要做的是比较两个列表。一个是随机数列表(我已经想到了),第二个是1和0的列表。 1意味着第一个列表中的数字需要用新的随机数替换。 0意思是他们想要保留这个数字。
有人可以帮助我,通过它来解释他们的逻辑吗?我现在不知所措,非常感谢你能给我的任何帮助。
这是我到目前为止所拥有的:
def replaceValues(distList, indexList):
for i in range (1,len(indexList)):
if indexList[i] = int(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]