python中reverse和reversed的介绍

文章目录

  • 结论
  • 题目引入
  • 试错过程
    • 错误代码1和修正
    • 错误代码2和修正
  • 答案思路和代码

结论

 
1.reversed() 函数是 Python 的内置函数,传入一个序列 seq(seq 可以是列表,元素,字符串以及 range() 生成的区间列表。),返回给定序列值的反向迭代器,需要通过遍历,List,或者next()等方法,获取作用后的值;
 
2.reverse() 函数是列表的函数,列表调用这个函数,直接原地更改原列表各项的顺序(反向)
 
注:后面只作为我的个人记录,可直接跳过
 

题目引入

这就不得不说起leetcode上的回文数题目了,题目链接 点这里,判断一个数是不是回文数。

 

试错过程

当时想如果把这个数字逆序,和原来一样便是回文数。
实现过程:有了思路,开始进行实现。代码如下

错误代码1和修正

def isPalindrome():x = 121x = list(str(x))   # 数字无法逆序,因此转成字符串后再转成列表y = x.reverse()if x == y:return Trueelse:return Falseprint(isPalindrome())

然后就显示False 了,我不乐意了,试着打印了一下y的值,显示None,??接着我用help(list.reverse)查询,显示 Reverse IN PLACE.(就地反转),即调用后x会直接修改,返回值为None,不行。接着修改代码如下:

def isPalindrome():x = 1213x = list(str(x))  # 将x转成字符串再转成列表y = tuple(x)  # y存储x的同时让y不随着x的改变而改变x.reverse()   # 反转xif x == list(y):  # 将反转后的x与y(与原x一样)进行比较return Trueelse:return Falseprint(isPalindrome())

成功了,可我觉着很麻烦,记忆中还有一个类型的方法reversed可以用,便接着修改代码。

错误代码2和修正

def isPalindrome():x = 121x = list(str(x))y = reversed(x)print(y)if x == y:return Trueelse:return Falseprint(isPalindrome())

提交到 leetcode上,失败,help(reversed),显示Return a reverse iterator over the values of the given sequence.(返回给定序列值的反向迭代器),需要通过遍历,List,或者next()等方法,获取作用后的值;于是接着修改(只添了一个list())

def isPalindrome():x = 121x = list(str(x))y = list(reversed(x))print(y)if x == y:return Trueelse:return Falseprint(isPalindrome())

成功了!虽然还是很丑陋。。。。

答案思路和代码

class Solution:def isPalindrome(self, x: int) -> bool:return str(x) == str(x)[::-1]

心态崩了。。可以使用字符串切片。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部