作业待补,先mark下笔记
Topic source##补作业来了 死活弄不出来列表生成式的倒序写法(当然看评论知道肯定有) 所以思路是把int转成list,然后对比list和该list倒序是否一样了。
首先是数字转成list(这里输出倒序版本的list)
def generate_numToListByReverse(n):
while n > 9:
i = n % 10
yield i
n = (n - i) // 10
yield n
def numToListByReverse(n):
return list(generate_numToListByReverse(n))
然后是对比下list咯:
def is_palindrome(n):
# 小规则:小于10都是算的
if n < 10:
return True
# 操作:数字转成list
num_list = numToListByReverse(n) # 倒序版
# list和倒序list做对比
num_reverse = num_list.copy()
num_reverse.reverse()
return num_list == num_reverse
比较累赘
- 1
烈可烈
这个写法很有意思
所以filter仅仅是过滤显示,并不像map一样根据函数生成新的改变了值的list。
阅读的时候卡了下,这个
and
,明明是交集的操作,怎么就返回True
或False
了。验证了下,发现Python是这样处理空格字符串的:
这样就好理解上面那个方法的写法了;
None
的话,False
and
任何都是False
''
,则也算False
,所以同上' '
,则and
后的,会被strip()
变成''
,所以是and
了个False
其他情况就不解释了。
##作业待补