9. Palindrome Number

来源:互联网 发布:电脑隐藏软件 编辑:程序博客网 时间:2024/06/07 14:44

题目:Determine whether an integer is a palindrome. Do this without extra space.

思路:开始想通过整数除法和取余数运算依次比较首尾是否相同,后来发现中间有0时很难比较。比如3005003
然后发现了一个神奇的东西,切片 666
一行代码搞定

return list(str(x))[::-1] == list(str(x))

这里写图片描述

如果我们把python里面的list比作一大块猪肉,那么list里面每一个元素,都是这块猪肉上面的一片,然后我们从左往右给这些猪肉编号:0,1,2,3,…..那什么是切片呢,它就是一种按照给定区间取猪肉的方式。比方说有个客人过来说,老板给我来这坨猪肉里面16-20号的猪肉片,看着新鲜。如果老板从头开始一个一个数猪肉数到16再开始给客人幺秤,这不是没上过小学么,要是有一大堆客人,那这家生意不要做了,太慢了。所以python就提供了切片这样一种简单的方式来方便我们取数。

切片的适用对象

    list,tuple(这个不知可行?最好亲测一下)

切片的格式

  [start_position : end_position : step]

解释一下这几个东西。start_position和end_position很好理解,就是要取猪肉的开始编号和结束编号,注意哦,这个地方是左闭右开。比如客人说我要5-10之间的,那么实际上给他的猪肉是从5号开始,到10号结束,但是10号是不给的,实际上给了5,6,7,8,9这几片。然后step是什么呢,比方说遇到一个很鸡婆的客人,他说我要5-12之间所有奇数的猪肉,啊这好烦啊,但是客人是上帝嘛。这个时候step就设为2,表示我隔一个取一个,设为3呢?隔两个取一个,依次类推。那要是客人说,我要5-12的猪肉,但是我要倒着的,因为我篮子是锥形的,12号最小要先放它进去才行。那这怎么办呢?我们把step设为-1,╮(╯▽╰)╭这样也可以啦~

有的时候我们会发现有些人的代码start_position ,end_position , step总有没填的,甚至都没填,那这是什么情况?其实就是默认的,如果没填,step默认是1,start_position就是从0开始,end_position就是到队尾。我们下面举例看看效果哈。

a = [1,2,3,4,5,6,7,8,9,10]print(a)       # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(a[::])   # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]print(a[::-1]) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]print(a[::-2]) # [10, 8, 6, 4, 2]print(a[1:5:]) # [2, 3, 4, 5]print(a[1:10:])# [2, 3, 4, 5, 6, 7, 8, 9, 10]print(a[1::])  # [2, 3, 4, 5, 6, 7, 8, 9, 10]print(a[1:-1:])# [2, 3, 4, 5, 6, 7, 8, 9]
原创粉丝点击