在之前的测试工作中,会遇到一些将一个列表进行拆分生成一个新的列表,代码容易变得杂乱,我们可以用列表推导时来进行优化。首先来看下列表推导式语法:
out_list = [out_express for out_express in input_list if out_express_condition]
list_1 = []
for i in range(5):
list_1.append(i ** 2)
print(list_1)
>>> [0, 1, 4, 9, 16]
可以将以上代码使用列表推导式实现,可使代码变得简洁,美观,由原来的的4行,变成为1行。
list_2 = [x ** 2 for x in range(5)] >>> [0, 1, 4, 9, 16]
在以上栗子中加入条件,过滤愿列表中的奇数。
# 常规方法实现:
list_1 = []
for i in range(5):
if i % 2 == 0:
list_1.append(i ** 2)
print(list_1)
>>> [0, 2, 4]
# 列表推导式实现 list_3 = [x for x in range(5) if x % 2 == 0] >>> [0, 2, 4]
多个列表:
list_4 = [(e, f * f) for e in range(3) for f in range(5, 15, 5)] >>> [(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)]
在工作中遇到一个问题,查询所有车辆,并判断是否可用,然后将可用的车辆生成新的list数据提供随机选择,此时就可以采用列表推导式加上if条件进行判断即可。
req = requests.post(url=url, headers=headers, json=data)
vehicle_list = [result['vehicleframeNo'] for result in req.json()['data']['results'] if
result['salesStatus'] == '未预定' and len(result['vehicleframeNo']) <= 20]
vehicle = random.choice(vehicle_list)
说实话,在以前写代码或看代码时,总会有意无意的避开列表推导式,觉得可读性太难了,一不小心就会绕晕,所以就没要注意这方面问题,导致编码能力原地踏步。我个人觉得列表推导式需要多去熟悉,多用。



