Python 一种函数,它同时接受一个列表(myList)和一个值(n),并检查该值是否在该列表中

Python 一种函数,它同时接受一个列表(myList)和一个值(n),并检查该值是否在该列表中,python,Python,我想知道是否有人知道如何在python中解决这个问题? 编写一个同时接受列表(myList)和值(n)的函数,并检查该值是否在该列表中。如果列表中确实存在该值,则将其替换为值“1”。您的函数应该返回更新的列表。使用函数签名:def replaceNum(myList,n): 示例:如果函数的输入是replaceNum([12,6,10,10],10),则函数将返回一个带有[12,6,1,1]的列表 到目前为止,我有这个 def replaceNum(myList,n): new_list

我想知道是否有人知道如何在python中解决这个问题? 编写一个同时接受列表(myList)和值(n)的函数,并检查该值是否在该列表中。如果列表中确实存在该值,则将其替换为值“1”。您的函数应该返回更新的列表。使用函数签名:def replaceNum(myList,n):

示例:如果函数的输入是replaceNum([12,6,10,10],10),则函数将返回一个带有[12,6,1,1]的列表

到目前为止,我有这个

def replaceNum(myList,n):
    new_list = []
    for i in range(0, len(myList)):
        if i == n:
            myList[n] = 1
            new_list.append(i)

        return myList[i]
print(replaceNum([5, 10, 20], 10))
但是它只打印一个5,我需要它来打印[5,1,20]

你可以用一个。该函数迭代
myList
中的每个元素,如果它等于
n
,则将其替换为
1

def replaceNum(myList, n):
    return [x if x != n else 1 for x in myList] 

print(replaceNum([5, 10, 20], 10))
输出

[5, 1, 20]

专注于修复代码

其中一个主要问题是,您正在返回循环内部。不仅如此,您还只能从
myList
返回单个项目

相反,您应该设置for循环,使用i,v enumerate(myList)对索引和值进行迭代,然后在找到匹配项时更改值

像这样:

def replaceNum(myList,n):
    for i, v in enumerate(myList):
        if v == n:
            myList[i] = 1
    return myList
print(replaceNum([5, 10, 20], 10))

然后,要进一步优化,请查看答案

@ZAMUEL123我认为您需要15个声誉才能投票