【发布时间】:2023-04-06 02:21:01
【问题描述】:
I'm taking this online Python course 他们不喜欢学生使用单线解决方案。本课程不接受此解决方案的括号。
我已经使用列表理解解决了这个问题,但是课程拒绝了我的回答。
问题如下:
使用
index和其他列表方法,编写一个函数replace(list, X, Y),将list中所有出现的X替换为Y。例如,如果L = [3, 1, 4, 1, 5, 9]则replace(L, 1, 7)会将L的内容更改为[3, 7, 4, 7, 5, 9]。为了让这个练习成为一个挑战,你不能使用[]。注意:你不需要使用return。
这是我目前所拥有的,但由于 TypeError: 'int' object is not iterable 而中断。
list = [3, 1, 4, 1, 5, 9]
def replace(list, X, Y):
while X in list:
for i,v in range(len(list)):
if v==1:
list.remove(1)
list.insert(i, 7)
replace(list, 1, 7)
这是我最初的答案,但被拒绝了。
list = [3, 1, 4, 1, 5, 9]
def replace(list, X, Y):
print([Y if v == X else v for v in list])
replace(list, 1, 7)
关于如何解决我的较长解决方案的任何想法?
【问题讨论】:
-
你的解决方法不对,应该是:
print([Y if v == X else v for v in list])。 -
试试
for i, v in enumerate(list):。 -
@Serdalis。你说得对。课程仍然不会接受该答案。
-
@Serdalis 该解决方案也不正确,因为它没有修改传递给它的列表,这是一个要求。
-
@Sven Marnach。我们不允许使用枚举。不是和in range(len(list))一样吗?
标签: python list replace list-comprehension