Discuss / Python / 作业待补,先mark下笔记

作业待补,先mark下笔记

Topic source

烈可烈

#1 Created at ... [Delete] [Delete and Lock User]

这个写法很有意思

def not_empty(s):
    return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '  ', 'a c b  ']))

所以filter仅仅是过滤显示,并不像map一样根据函数生成新的改变了值的list。

阅读的时候卡了下,这个and,明明是交集的操作,怎么就返回TrueFalse了。

验证了下,发现Python是这样处理空格字符串的:

if '  ':
    print('多个空格不算是空啊')
if not '':
    print('一个空格算是空啊')

这样就好理解上面那个方法的写法了;

  • 传入的是None的话,False and任何都是False
  • 传入是'',则也算False,所以同上
  • 传入是' ',则and后的,会被strip()变成'',所以是and了个False

其他情况就不解释了。


##作业待补

烈可烈

#2 Created at ... [Delete] [Delete and Lock User]

##补作业来了 死活弄不出来列表生成式的倒序写法(当然看评论知道肯定有) 所以思路是把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

Reply