Python 如何用随机数替换列表中的元素

Python 如何用随机数替换列表中的元素,python,list,Python,List,首先,我是一个python初学者,只专注于简单的事情 我想根据另一个列表中的值,用随机创建的数字(按索引)替换列表中的一些元素 预期输出如下:[3,2,2,1,3] 我在下面的代码完全不能正常工作 ori = [4,1,2,1,3] # some elements inside need to be changed num_list = [2,1,1,1] # numbers that represent index in ori import random for num in

首先,我是一个python初学者,只专注于简单的事情

我想根据另一个列表中的值,用随机创建的数字(按索引)替换列表中的一些元素

预期输出如下:[3,2,2,1,3]

我在下面的代码完全不能正常工作

ori = [4,1,2,1,3]   # some elements inside need to be changed 
num_list = [2,1,1,1]    # numbers that represent index in ori

import random
for num in range(len(num_list)):
    ori[num-1]= random.randint(1,4)
    # I want to replace element with previous one from given index                                                                           
print(ori)


我不知道你想做什么,但这段代码似乎很好。为什么num_列表包含3次数字“1”?在这段代码中,它将ori[1]替换为随机数3次。。。ori[2]的确定将被随机分配一次

ori = [4,1,2,1,3]   # some elements inside need to be changed 
num_list = [2,1,1,1]    # numbers that represent index in ori

import random
for num in num_list:
    ori[num]= random.randint(1,4)
print(ori)

问题是,您声明的
num
变量只是
num\u列表中的位置,因此在这里您将更改
ori
的位置
0、1、2、3
(这将由
范围表示)

您可以按如下方式修复代码:

ori = [4,1,2,1,3]   # some elements inside need to be changed 
num_list = [2,1,1,1]    # numbers that represent index in ori

import random
for num in num_list:
    ori[num-1]= random.randint(1,4)

为什么
范围(len(
如果
num\u list
已经是要修改的索引?可能您也不应该允许在
num\u list
中使用重复的索引(例如,使用
set
而不是
列表
)为什么索引1被提到了三次?你怎么能对你使用random的输出有期望呢?呃…我的意思是通过
num\u列表中的每一项来获得要修改的值。我想你的意思是“for num in num\u list:”值1是重复的,应该只需要其中一项就可以修改。我给出的预期输出只是举个例子,我想更改[0]和[1]值