- 生成指定序列列表(程序生成)
lst = [] for i in range(1,6): lst.append('python_%d' % i) print(lst)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
['python_1', 'python_2', 'python_3', 'python_4', 'python_5']
语法:
[结果 for 变量 in 可迭代对象 [其他流程语句]]
return 可迭代对象
-
列表推倒式
#语法: lst = ['python_%d' % i for i in range(1,6)] print(lst)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
['python_1', 'python_2', 'python_3', 'python_4', 'python_5'] - 字典推倒式
dic = {'a':'111','b':'222'} nwe_dic = {dic[key]:key for key in dic} print(nwe_dic)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
{'111': 'a', '222': 'b'} - 集合推导式
lst = [1,2,3,1,1,3,2] s = {i for i in lst} print(s)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
{1, 2, 3} - 生成器表达式
r = (i for i in range(6)) print(list(r))
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
[0, 1, 2, 3, 4, 5] - 练习
- 1习题一
# 100以内被19整除的数 lst = [i for i in range(1,101) if i % 19 == 0] print(lst)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
[19, 38, 57, 76, 95] - 2 习题二
lst1 = ['刘德华','周星驰','周润发'] lst2 = ['华仔','星爷','发哥'] # 找出周润发与昵称 dic = {i1:i2 for i1 in lst1 for i2 in lst2 if i1.count('周润发') and i2.find('发哥') != -1} print(dic)
结果:
F:\myPy\venv\Scripts\python.exe F:/myPy/test.py
{'周润发': '发哥'} - 3 习题三
lst1 = ['刘德华','周星驰','周润发'] lst2 = ['华仔','星爷','发哥'] # 找出对应的昵称 dic = {lst1[i]:lst2[i] for i in range(len(lst1))} print(dic)
结果:
{'刘德华': '华仔', '周星驰': '星爷', '周润发': '发哥'}
- 1习题一
总结:(没有元组推导式)
- 列表推导式比较耗费内存,一次性加载,生成器表达式几乎不用占内存。使用的时候才分配和使用内存
- 得到的值不一样,列表推导式得到的是一个列表。生成器表达式得到的是一个生成器
举例:
同样一个篮子的鸭蛋,列表推导式:直接拿到一篮子鸭蛋。生成器表达式:拿到一只母鸭子, 需要鸭蛋时才下蛋。
转载于:https://blog.51cto.com/13972320/2378448