比较第二个列表中列表索引和整数的值

2024-09-30 14:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力完成我的第一个Python程序(大约一个月前我刚开始学习Python课程)。现在,我只能使用标准库,但我也可以导入随机库。你知道吗

我想做的是比较两个列表。第一个是随机数的列表(我已经计算出来了),第二个是1和0的列表。1意味着第一个列表中的数字需要替换为一个新的随机数。0表示他们想保留这个号码。你知道吗

有人能帮我解释一下他们的逻辑吗?我现在不知所措,非常感谢你能给我的任何帮助。你知道吗

以下是我目前掌握的情况:

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

然后我就迷路了。你知道吗

谢谢!你知道吗


Tags: in程序列表for标准def情况range
1条回答
网友
1楼 · 发布于 2024-09-30 14:27:27

使用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]

相关问题 更多 >