例题:回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()筛选出回数:
def is_palindrome(n):
return str ( n ) == str ( n )[::-1]
if __name__ == '__main__':
output = filter ( is_palindrome , range ( 1 , 1000 ) )
print ( '1~1000:' , list ( output ) )
其中
return str ( n ) == str ( n )[::-1]
Python提供了切片(Slice)操作符
L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
取前3个元素,用一行代码就可以完成切片:
L[0:3]
[‘Michael’, ‘Sarah’, ‘Tracy’]
如果第一个索引是0,还可以省略:
L[:3]
[‘Michael’, ‘Sarah’, ‘Tracy’]
支持倒数切片(倒数第一个元素的索引是-1):
L[-2:]
[‘Bob’, ‘Jack’]
L[-2:-1]
[‘Bob’]
前10个数,每两个取一个:
L[:10:2]
[0, 2, 4, 6, 8]
所有数,每5个取一个:
L[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
L[i:j] 表示复制L[i]到L[j-1],以生成新的list对象
当i缺省时,默认为0,即 L[:j]相当于 L[0:j]
当j缺省时,默认为len(list), 即a[1:]相当于a[1:最大]
当i,j都缺省时,L[:]就相当于完整复制一份L了
L[i:j:s],i,j与上面的一样,但s表示步进,缺省为1,a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
return str ( n ) == str ( n )[::-1]
str[::-1]相当于 str[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,进行反转。