python基础学习(三)-- list comprehensions
import os # 列表生成式即list comprehensions 是python内置的非常简单却非常强大的可以用来创建list的生成式 # example: 生成list[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)) print(list(range(1, 11))) # 比如要生成[1*1, 2*2, 3*3 ...]这样的list 不动脑子的做法是循环: l = list(range(1, 11)) for k, v in enumerate(l): l[k] = v * v print(l) # 而列表生成式则可以用一行语句代替循环生成上面的list: print([x * x for x in range(1, 11)]) # 写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来 for循环后面还可以加上if判断 print([x * x for x in range(1, 11) if x % 2 == 0]) # 还可以使用两层循环,可以生成全排列: print([n + m for n in 'ABC' for m in 'XYZ']) # example:列出当前目录下的所有文件和目录名,可以通过一行代码实现: print([d for d in os.listdir('.')]) # 列表生成式也可以使用两个变量来生成list d = {'x': 'A', 'y': 'B', 'z': 'C'} print([k + '=' + v for k, v in d.items()]) # 最后把一个list中所有的字符串变成小写: l = ['Hello', 'World', 'IBM', 'Apple'] print([s.lower() for s in l]) # practice:如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错,使用内建的isinstance函数可以判断一个变量是不是字符串: practice = ['Hello', 'World', 18, 'Apple', None] print([s.lower() for s in practice if isinstance(s, str) == True]) # 运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。