孤妓与酒 发表于 2021-3-12 15:15:00

第19讲:回文联有点小问题

list1 == list(list2)为什么要这样写,而不可以直接list1 == list2??
def palindrome(string):
    list1 = list(string)
    list2 = reversed(list1)#reversed:倒转
    if list1 == list(list2):
      return '是回文联!'
    else:
      return '不是回文联!'
string = input('请输入一句话:')
print(palindrome(string))

jackz007 发表于 2021-3-12 15:29:05

本帖最后由 jackz007 于 2021-3-12 15:32 编辑

       reversed() 的功能是使序列倒序,假如 s = 'ABC',那么,reversed(s) = 'CBA'。显然,如果一个字符串与自己的反序形式相同,那就必是回文联无疑。当然,通过字符串切片也可以达到同样的效果,如果 s = 'ABC',那么,s[::-1] = 'CBA',所以,如果 s == s[:: -1]也同样可以判定 s 就是回文联。

Peteryo01223 发表于 2021-3-12 15:32:02

本帖最后由 Peteryo01223 于 2021-3-12 15:34 编辑

你说得对,直接写 list1 == list2 就行。
def palindrome(string):
    list1 = list(string)
    list2 = list(reversed(list1))
    if list1 == list2:
      return '是回文联!'
    else:
      return '不是回文联。'
string = input('请输入一句话:')
print(palindrome(string))
你那个复杂的写法,是引用的 FishC 的标准答案?

冬雪雪冬 发表于 2021-3-12 15:34:40

reversed得到的是一个可迭代对象,用list才能转换为列表
>>> a=list('abc')
>>> b=reversed(a)
>>> b
<list_reverseiterator object at 0x0000000002C0A5B0>

孤妓与酒 发表于 2021-3-12 15:38:12

Peteryo01223 发表于 2021-3-12 15:32
你说得对,直接写 list1 == list2 就行。

你那个复杂的写法,是引用的 FishC 的标准答案?

大佬,我差点被你搞蒙了,你的代码和我原代码不一样好吧
我的是这样:list2 = reversed(list1)
你的是这样:list2 = list(reversed(list1))
你这是在呼我吗。。。。

孤妓与酒 发表于 2021-3-12 15:39:07

jackz007 发表于 2021-3-12 15:29
reversed() 的功能是使序列倒序,假如 s = 'ABC',那么,reversed(s) = 'CBA'。显然,如果一个字符 ...

额,我没太看明白,如果你是有自己的做法,就把整个代码放进来呗

Peteryo01223 发表于 2021-3-12 15:39:23

孤妓与酒 发表于 2021-3-12 15:38
大佬,我差点被你搞蒙了,你的代码和我原代码不一样好吧
我的是这样:
你的是这样:


抱歉哈,没仔细看你的,我自己顺手写了。。。

孤妓与酒 发表于 2021-3-12 15:41:58

Peteryo01223 发表于 2021-3-12 15:32
你说得对,直接写 list1 == list2 就行。

你那个复杂的写法,是引用的 FishC 的标准答案?

我们的差不了多少,......这个我本来是想把这之间的代码加粗的,不知道为啥就成这样了

孤妓与酒 发表于 2021-3-12 15:42:46

冬雪雪冬 发表于 2021-3-12 15:34
reversed得到的是一个可迭代对象,用list才能转换为列表

这样啊,明白了,谢谢大佬
页: [1]
查看完整版本: 第19讲:回文联有点小问题