黑翼大魔 发表于 2018-4-9 12:34:33

这两种代码的区别

区别在第四行
def huiwenlian(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list(list2):
      print("是回文联")
    else:
      print("不是回文联")        输入huiwenlian(‘aaa’)后输出是回文联

def huiwenlian(string):
    list1 = list(string)
    list2 = reversed(list1)
    if list1 == list2:
      print("是回文联")
    else:
      print("不是回文联")        输入huiwenlian(‘aaa’)后输出不是回文联

这个是什么道理呢?为啥list1不能直接等于list2呢,必须要再一次转为list格式,list2已经是list格式了吧

BngThea 发表于 2018-4-9 12:37:46

用reversed函数反转得到的不是list
>>> a=
>>> b=reversed(a)
>>> type(b)
<class 'list_reverseiterator'>

黑翼大魔 发表于 2018-4-9 12:57:42

BngThea 发表于 2018-4-9 12:37
用reversed函数反转得到的不是list

感谢,哎,看来我对细节把握还是太差了点

第四时空 发表于 2018-4-9 12:58:53

reversed得到的是对象的反向迭代器。
如果想要得到新的列表,可以使用sorted(list1, reverse=True)

黑翼大魔 发表于 2018-4-9 15:42:47

第四时空 发表于 2018-4-9 12:58
reversed得到的是对象的反向迭代器。
如果想要得到新的列表,可以使用sorted(list1, reverse=True)

感谢!!
页: [1]
查看完整版本: 这两种代码的区别