在我的编程课上,我们有一个练习问题,目标是用一个0替换列表中两个连续数字中的第二个,如果这些数字相等的话。你知道吗
例如:
def zeroDuplicates([1,5,2,7,7])
将输出[1,5,2,7,0]
然而,当我尝试这样做,我总是得到一个错误。 到目前为止,我掌握的情况如下:
def zeroDuplicates(nums):
count =0
for n in nums:
if n == nums[n-1]:
nums.replace[n,0]
return nums
运行此程序时出现错误消息:
"Error: 'list' object has no attribute 'replace'"
n
是示例中的元素,而不是索引。如果某个元素等于其索引值为负1的元素,则作为伪代码的程序将替换该元素。你知道吗让您的问题更明确(机器人友好):您希望从
1
迭代到列表的长度,如果当前元素等于前一个元素,则将其替换为零。你知道吗现在让我们把英语翻译成Python(我们用
i
表示索引):好处:您可以使用列表理解和压缩来“pythonize”它:
(对于每个元素及其后续元素,如果它们等于,则后续元素等于0,否则将保持不变)。你知道吗
请注意,如果几个值相同,您的方法也不起作用,我建议您创建一个新列表,这样您就不会与可能更改的值进行比较。我建议使用^{} ,这在本例中似乎非常合适:
您还有一个上面的代码无法处理的问题
如果重复值不是发生在索引-1位置,而是发生在索引-1位置之前,会怎么样?你知道吗
输出:
相关问题 更多 >
编程相关推荐