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]
心态崩了。。可以使用字符串切片。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
