如何使用单行Python代码从给定的列表中分别筛选出所有偶数和奇数?
考察说明
考察对Python列表推导式及条件判断的掌握程度
回答思路
- 【回答框架 1】列表推导式是Python中常用的构造列表的语法,可以在单行内完成遍历和筛选。其基本形式为[expression for item in iterable if condition],其中expression是对item的变换,if condition用于过滤元素。
- 【回答框架 2】对给定的列表lst,偶数筛选可写为[x for x in lst if x % 2 == 0],奇数筛选可写为[x for x in lst if x % 2 != 0]。利用取模运算符%判断除以2的余数,若为0则为偶数,否则为奇数。
- 【回答框架 3】题目要求‘取出所有偶数和奇数’,可理解为需要分别得到偶数和奇数两个列表,因此单行代码可以是even = [x for x in lst if x % 2 == 0]和odd = [x for x in lst if x % 2 != 0],每行使用一次推导式,共两行,但每行都是单行完成筛选逻辑。
- 【回答框架 4】若需在一行内同时得到两个列表,可借助其他手段,如使用filter函数和lambda表达式,但列表推导式更简洁直观。注意事项:列表推导式返回新列表,不改动原列表;对非整数元素需先处理类型,否则模运算会出错。
- 【关键点 1】列表推导式语法:偶数[x for x in lst if x % 2 == 0]
- 【关键点 2】奇数筛选用条件x % 2 != 0或x % 2 == 1
- 【关键点 3】取模运算%是判断奇偶的核心操作
- 【易错点 1】不能将偶数和奇数筛选写成一个推导式同时返回两个列表,除非使用一次遍历并分条件构建多个列表的策略
- 【易错点 2】注意列表元素类型,若包含非整数,直接取模会抛出TypeError