1049406193 发表于 2020-5-2 19:06:57

大神求解

def palindrome(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list(list2):
      return '是回文联!'
    else:
      return '不是回文联!'
print(palindrome('上海自来水来自海上'))


list(list2)能不能写成list2,list(list2)和list2的区别是啥

qiuyouzhi 发表于 2020-5-2 19:10:27

reversed返回的是一个reversed object,是一个迭代器
而list会调用迭代器的__next__()方法,不用list达不到效果。

MIke_python小小 发表于 2020-5-2 19:11:39

list(list2)是吧list2装换成列表

求最佳

MIke_python小小 发表于 2020-5-2 19:12:29

list2不是列表

求最佳{:10_254:}

wuqramy 发表于 2020-5-2 19:14:59

让我们看看reversed后是个什么东西:
>>> a =
>>> b = reversed(a)
>>> b
<list_reverseiterator object at 0x0000000002D9B100>
<list_reverseiterator object at 0x0000000002D9B100>?!这是啥呀!(其实是个迭代器)
然后在list()一下
>>> b = list(b)
>>> b

这样一来,b就成为了我们需要的列表
你的问题的答案是同样的道理

liuzhengyuan 发表于 2020-5-2 19:47:59

reverse 返回的是一个迭代器,不是列表

zltzlt 发表于 2020-5-3 21:03:13

reversed() 返回的是一个迭代器,迭代器不能和列表直接比较,所以先要把 list2 转化为列表再和 list1 比较。
页: [1]
查看完整版本: 大神求解