基础知识果然不复习就会忘,今天看到一行代码
letter_codes = [ord(ch) for ch in 'WASDRQwasdrq']
一直在想for前面加这个函数是要干啥,经过查找之后,原来是列表生成式。此处简要介绍列表生成式
1.
[x *x for x in range(1,11)]
运算结果是
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
原理是:将range包含的数字(1~10)放到x*x中得到结果
2.利用if筛选
[x * x for x in range(1,11) if x%2==0]
运算结果是:
[4, 16, 36, 64, 100]
原理是:将range包含的数字进行筛选,去掉非偶数之后放到x*x得到结果
3.套用双层循环,生成全排列
[m + n for m in 'ABC' for n in 'XYZ']
运算结果:
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
原理:和普通双层for循环运行方式一致
4.使用两个变量生成列表
d={'A':'x','B':'y','C':'z'}
[k+'='+v for k,v in d.items()]
运行结果是:
['A=x','B=y','C=z']
for循环可以使用两个或多个变量
5.if else
在for前面的if需要与else配对才不会报错,若if在for后面,是筛选条件,不能带else
[x if x%2==0 for x in range(1,11)]
这行代码会报错,因为x若不为偶数则无法处理x,所以必须加else
[x if x%2==0 else -x for x in range(1,11)]
运行结果是:
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]
原理:range范围内的数字先判断是偶数的话赋值给x,若不是偶数,写为-x传给列表