推导式创建序列
推导式是从一个或者多个迭代器快速创建序列的一种方法,它可以将循环和条件判断结合,避免冗长的代码。
语法:
-
列表推导式
[表达式 for item in 可迭代对象]
或者
[表达式 for item in 可迭代对象 if 条件判断] -
字典推导式
{key_expression : value_expression for 表达式 in 可迭代对象}
或者
{key_expression: value_expression for 表达式 in 可迭代对象 if 条件判断} -
集合推导式
{表达式 for item in 可迭代对象 }
{表达式 for item in 可迭代对象 if 条件判断}
#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: lyf
@file: mypy003.py
@time: 2021/07/11
@desc: 测试推导式
"""
#列表推导式
y1 = [x for x in range(1,5)]
print(y1)
y1test = []
for x in range(1,5):
y1test.append(x*2)
print(y1test)
print('--------------------------')
y2 = [x*2 for x in range(1,5)]
print(y2)
print('----------加入条件语句------------')
y3 = [x*2 for x in range(1,5)if x%5 == 0]
print(y3)
print('------------字符串---------------')
y4 = [a for a in 'abcdefg']
print(y4)
print('----------使用两个循环----------')
cells = [(row,cel) for row in range(1,10) for cel in range(1,10)]
print(cells)
for cell in cells:
print(cell)
print('---------字典推导式-------------')
my_text = 'i love you, i love sxt, i love lyf'
char_count = {c:my_text.count(c) for c in my_text}
print(char_count)
print('------------普通循环--------------')
char_count1 = {}
for c1 in my_text:
b = {c1:my_text.count(c1)}
char_count1.update(b)
print(char_count1)
print('--------集合推导式-------')
d = {x for x in range(1,100) if x%9==0 }
print(d)
print('------生成器推导式(生成元组)-------')
gnt = (x for x in range(1,100) if x%9==0 )
print(tuple(gnt))
print(tuple(gnt))
print('-------循环显示生成器对象-------')
gnt1 = (x for x in range(1,100) if x%9==0 )
for x in gnt1:
#生成器是一个可迭代的对象,只能使用一次
print(x,end=',')
```