|
|
发表于 2017-2-1 01:07:46
|
显示全部楼层
你可以在比较前打印输出一下两个列表的值,这样就知道问题了。
- def a(string):
- list1 = list(string)
- list2 = reversed(list1)
- print(list1)
- print(list2)
- if list1 == list2:
- return '是回联文'
- else:
- return '不是回联文'
- print(a('大大大'))
复制代码
其中输出的结果是:
- ['大', '大', '大']
- <list_reverseiterator object at 0x000002A5D91F42B0>
- 不是回联文
复制代码
其实,我们也可以查看帮助,对于reversed()方法的解释如下:
- reversed(seq)
- Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).
复制代码
从上文的内容,可以看出,这个reversed()方法,其返回值是一个反转的迭代器对象。所以一个列表和一个迭代器,当然是不可能相同的。
想要让它可以正常的判断,我们也可以把迭代器显式转换为列表,也就是使用:
- list2 = list(reversed(list1))
复制代码
其实对于这类问题的调试,建议还是多输出一些打印内容,这样我们可以很明显得出代码出错的原因。 |
|