Python 一行代码产生所有字母 列表推导式 面试题
考查基本知识&灵活应变能力
怎么推导?
# 内部的语句满足条件执行,当然你可以不写if
# 关于变量随意,这里x
[含x一条语句 for x in 可迭代数据 if 执行语句并保留结果的条件 ]
# 如下你还可以对语句结果做各种处理,最终放在列表里
[{含x一条语句} for x in 可迭代数据 if 执行语句并保留结果的条件 ]
【out】[{语句结果},{语句结果},{语句结果}...]
# 上边例子结果是集合最终作为列表元素
# 你甚至可以这么玩!
[print(含x一条语句) for x in 可迭代数据 if 执行语句并保留结果的条件 ]
【out】
打印语句结果
打印语句结果
打印语句结果
...
[None,None,None,None,None,...] # print() 返回值None作为列表元素
# 充分体会:1.语句会执行 2.语句结果作为列表元素
回到问题
你需要知道 ord(),chr()
'a' 97 --->z 【懒得算啦】ord('z')
'A' ord('A')【懒得算啦】--->【懒得算啦】ord('Z')
[重点]: 'a' ASCII码 大于所有大写字母
大小写字母中ASCII码最大是 'z'
大小写字母中ASCII码最小是 'A'
我们并不知道大小写字母ASCII之间是否还有别的特殊符号
【有!】
'我是字符串'.isalpha() -->True # 返回布尔值 是否为A~z or 中文
所有字母的ASCII码顺序
从小到大 A~Z- a~z
##练习起来宝贝
【in】
// 用一哈列表推导式
// range(200) 解释下为何在这个范围,只要保证产生的数字>= 'z' 的122就好
//PS:range(99999999999)~无所谓
[chr(x) for x in range(200) if x <= ord("z") and x >= ord("A") and chr(x).isalpha()]
【out】
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']