【发布时间】:2020-08-22 23:11:04
【问题描述】:
问题
问题链接:https://www.codewars.com/kata/52597aa56021e91c93000cb0/train/python
编写一个算法,该算法采用一个数组并将所有零移到末尾,同时保留其他元素的顺序。
move_zeros([false,1,0,1,2,0,1,3,"a"]) # returns[false,1,1,2,1,3,"a",0,0]
我的代码:
def move_zeros(array):
list = []
list2 = []
for n in array:
if n is 0:
list2.append(n)
else:
list.append(n)
return list + list2
样本测试:
Test.describe("Basic tests")
Test.assert_equals(move_zeros([1,2,0,1,0,1,0,3,0,1]),[ 1, 2, 1, 1, 3, 1, 0, 0, 0, 0 ])
Test.assert_equals(move_zeros([9,0.0,0,9,1,2,0,1,0,1,0.0,3,0,1,9,0,0,0,0,9]),[9,9,1,2,1,1,3,1,9,9,0,0,0,0,0,0,0,0,0,0])
Test.assert_equals(move_zeros(["a",0,0,"b","c","d",0,1,0,1,0,3,0,1,9,0,0,0,0,9]),["a","b","c","d",1,1,3,1,9,9,0,0,0,0,0,0,0,0,0,0])
Test.assert_equals(move_zeros(["a",0,0,"b",None,"c","d",0,1,False,0,1,0,3,[],0,1,9,0,0,{},0,0,9]),["a","b",None,"c","d",1,False,1,3,[],1,9,{},9,0,0,0,0,0,0,0,0,0,0])
Test.assert_equals(move_zeros([0,1,None,2,False,1,0]),[1,None,2,False,1,0,0])
Test.assert_equals(move_zeros(["a","b"]),["a","b"])
Test.assert_equals(move_zeros(["a"]),["a"])
Test.assert_equals(move_zeros([0,0]),[0,0])
Test.assert_equals(move_zeros([0]),[0])
Test.assert_equals(move_zeros([False]),[False])
Test.assert_equals(move_zeros([]),[])
我的输出:
- 测试通过
- [9, 0.0, 9, 1, 2, 1, 1, 0.0, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0] 应该等于 [ 9, 9, 1, 2, 1, 1, 3, 1, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- 测试通过
- 测试通过
- 测试通过
- 测试通过
- 测试通过
- 测试通过
- 测试通过
- 测试通过
- 测试通过
我的问题:
我相信它会失败,因为 0.0 不是 0。但我很难理解我该如何写。 我正在开始编码,所以我的代码看起来不像 Python,但我想这是我必须练习的东西
【问题讨论】:
标签: python arrays algorithm sorting optimization