python_day5_推导式创建序列

推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方式。他可以将循环和条件判断结合,从而避免冗长的代码。

列表推导式

列表推导式生成列表对象,语法如下:

{表达式 for item in 可迭代对象}
或者:
{表达式 for item in 可迭代对象 if 条件判断}
[x for x in range (1,5)]
Out[2]: [1, 2, 3, 4]
[x*2 for x in range(1,5)]
Out[3]: [2, 4, 6, 8]
[x*2 for x in range(1,20) if x%5==0]
Out[4]: [10, 20, 30]
[a for a in 'abcdefg']
Out[5]: ['a', 'b', 'c', 'd', 'e', 'f', 'g']
cells=[(row,col) for row in range(1,10)for col in range(1,10)]
for cell in cells:
    print(cell)
    
(1, 1)
(1, 2)
(1, 3)
(1, 4)
(1, 5)
(1, 6)
(1, 7)
(1, 8)
(1, 9)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(2, 5)
(2, 6)
(2, 7)
(2, 8)
(2, 9)
(3, 1)
(3, 2)
(3, 3)
(3, 4)
(3, 5)
(3, 6)
(3, 7)
(3, 8)
(3, 9)
(4, 1)
(4, 2)
(4, 3)
(4, 4)
(4, 5)
(4, 6)
(4, 7)
(4, 8)
(4, 9)
(5, 1)
(5, 2)
(5, 3)
(5, 4)
(5, 5)
(5, 6)
(5, 7)
(5, 8)
(5, 9)
(6, 1)
(6, 2)
(6, 3)
(6, 4)
(6, 5)
(6, 6)
(6, 7)
(6, 8)
(6, 9)
(7, 1)
(7, 2)
(7, 3)
(7, 4)
(7, 5)
(7, 6)
(7, 7)
(7, 8)
(7, 9)
(8, 1)
(8, 2)
(8, 3)
(8, 4)
(8, 5)
(8, 6)
(8, 7)
(8, 8)
(8, 9)
(9, 1)
(9, 2)
(9, 3)
(9, 4)
(9, 5)
(9, 6)
(9, 7)
(9, 8)
(9, 9)

字典推导式

统计文本中字符出现的次数:

my_text='i love you,i love sxt,i love gaoqi'
char_count={c:my_text.count(c) for c in my_text}
char_count
Out[23]: 
{'i': 4,
 ' ': 6,
 'l': 3,
 'o': 5,
 'v': 3,
 'e': 3,
 'y': 1,
 'u': 1,
 ',': 2,
 's': 1,
 'x': 1,
 't': 1,
 'g': 1,
 'a': 1,
 'q': 1}

集合推导式

b={x for x in range(1,100) if x%9==0}
print(b)
{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}

生成器推导式(生成元组)

生成器只能用一次,第二次使用无用

gnt=(x for x in range(4))
print(gnt)
<generator object <genexpr> at 0x00000132168E9E58>
print(tuple(gnt))
(0, 1, 2, 3)
print(tuple(gnt))
()

gnt=(x for x in range(4))
for x in gnt:
    print(x,end=",")
    
0,1,2,3,
发布了22 篇原创文章 · 获赞 1 · 访问量 463

猜你喜欢

转载自blog.csdn.net/ws297933371/article/details/105590268