1.列表推导 vs map
注:Python的内置ord函数会返回一个单个字符的整数编码(chr内置函数为其逆过程)
>>>ord('s')
115
举例:假设我们要收集某一个字符串中所有字符的ASCⅡ编码
① 最直接的办法应该就是for循环:
res = []
for x in 'spam':
res.append(ord(x))
print(res)
>[115, 112, 97, 109]
② 使用列表推导表达式得到相同的结果:
res = [ord(x) for x in 'spam']
print(res)
>[115, 112, 97, 109]
③ 利用map单个函数实现相似结果:
res = list(map(ord, 'spam'))
print(res)
>[115, 112, 97, 109]
④ 使用lambda表达式和map函数实现相同效果:
res = list(map(lambda x: ord(x), 'spam'))
print(res)
>[115, 112, 97, 109]
2.使用filter增加测试和循环嵌套
举例:从0~4中选择出偶数
① 同样for循环可以实现:
res = []
for x in range(5):
if x % 2 == 0:
res.append(x)
print(res)
>[0, 2, 4]
② 使用列表推导表达式实现:
res = [x for x in range(5) if x % 2 == 0]
print(res)
>[0, 2, 4]
③ 利用类似map函数的filter实现:
res = list(filter((lambda x: x % 2 == 0), range(5)))
print(res)
>[0, 2, 4]