我是计算机科学学位的第一年,我没有编程背景,所以这可能是一个基本问题。
所以,我们的教授禁止在所有作业中使用replace()函数,因为显然,它是作弊的#34;。我正在做一个我必须使用replace函数的赋值,但由于我不能使用它,我只是创建了一个遍历列表中所有元素的for循环。举个例子,如果我想要替换所有出现的" 1"在" 5" s,
的列表中for number in list_of_numbers:
if number == "1":
number = "5"
它完成了它的工作但我很好奇是否有更有效的方法来不使用replace()? 谢谢你的帮助。
答案 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]