如何为列表编写replace()函数

时间:2016-11-21 22:15:28

标签: python list replace

我是计算机科学学位的第一年,我没有编程背景,所以这可能是一个基本问题。

所以,我们的教授禁止在所有作业中使用replace()函数,因为显然,它是作弊的#34;。我正在做一个我必须使用replace函数的赋值,但由于我不能使用它,我只是创建了一个遍历列表中所有元素的for循环。举个例子,如果我想要替换所有出现的" 1"在" 5" s,

的列表中
for number in list_of_numbers:
    if number == "1":
        number = "5"

它完成了它的工作但我很好奇是否有更有效的方法来不使用replace()? 谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

你的方式可能是你教授想要的方式。

你也可以使它成为列表理解。它看起来像这样

def f(x):
    if x=="1": return "5"
    else: return x

list_of_numbers = [f(x) for x in list_of_numbers]

我会确保你所拥有的解决方案能够做到你认为它的功能。还要确保你真的想要处理数字串,而不仅仅是整数本身。

答案 1 :(得分:0)

你可以试试这个。

地图(lambda x:' 5'如果x ==' 1'否则x,list_of_numbers)

不过,你可以尝试在python中学习一些lambda和map函数。这很有用

答案 2 :(得分:0)

这是教授想要的:

n = len(list_of_numbers)
for i in range(n):
    if list_of_numbers[i]==1: list_of_numbers[i]=5

print (list_of_numbers)

答案 3 :(得分:0)

您可以按如下方式编写my_replace函数(它将n1替换为列表n2中的l):

def my_replace(n1, n2, l):
    for item in l:
        if item == n1:
            l[l.index(item)] = n2

<强> Outpout:

>>> list_of_numbers = [1, 2, 3, 1, 3, 4, 4, 5, 2, 1, 8, 7]
>>> my_replace(1, 5, list_of_numbers)
>>> list_of_numbers
[5, 2, 3, 5, 3, 4, 4, 5, 2, 5, 8, 7]

您也可以使用列表推导来避免更新原始列表:

[x if x != 1 else 5 for x in list_of_numbers]

<强>输出:

>>> [x if x != 1 else 5 for x in list_of_numbers]
[5, 2, 3, 5, 3, 4, 4, 5, 2, 5, 8, 7]