我在没有使用reversed()函数的情况下进行了反向枚举。我希望字符串和数字反向打印。但是,在测试时,我得到一个AssertionError,指出列表不匹配。
def my_own_enumerate(a):
for i in range(len(a)-1, -1, -1):
return i, a[i]
class Test(unittest.TestCase):
def test_my_own_enumerate(self):
self.assertEqual([(0, "m"), (1, "e"), (2, "!")], list(my_own_enumerate("me!")))
my_own_enumerate
意味着返回一个反向枚举(如你所说),所以我不确定为什么你用非反转枚举来断言它的输出。my_own_enumerate
中的循环在第一次迭代后返回,因此它将始终只返回最后一个字符及其索引。相反,试试吧
def my_own_enumerate(a):
return [(i, a[i]) for i in range(len(a) - 1, -1, -1)]
然后
print(my_own_enumerate('me!'))
# [(2, '!'), (1, 'e'), (0, 'm')]
和
class Test(unittest.TestCase):
def test_my_own_enumerate(self):
self.assertEqual([(2, '!'), (1, 'e'), (0, 'm')], my_own_enumerate("me!"))
不会失败。