列表推导式,集合推导式,生成器推导式

列表推导式

列表推导式:利用for循环已有列表快速生成满足要求的列表

  • 语法形式:

[ 表达式 for 表达式的变量 in 已有序列  ( if  过滤条件 ) ]

示例代码如下:

>>>my_list = [i * i for i in range(5)]
>>>print(my_list)
[0, 1, 4, 9, 16]

加入if语句筛选出的列表:

>>>my_list = [i for i in range(10) if i %2 == 0]
>>>print(my_list)
[0, 2, 4, 6, 8]

运用多个for循环,实现多个序列的元素组合:

序列x每个元素和序列y每个元素分别组合

>>>list1 = ['a', 'b']
>>>my_list = [[x, y] for x in range(3) for y in list1]
>>>print(my_list)
[[0, 'a'], [0, 'b'], [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]

 

 

集合推导式

集合推导式写法类似于列表推导式,只不过集合推导式用一对大括号表示,而不是一对中括号。同时集合推导式会去除结果中的重复元素

  • 语法形式:

{表达式  for 变量  in 已有序列 if 过滤条件}

示例代码如下:

>>>my_set = {x*x for x in range(-5, 5)}
>>>print(my_set)
{0, 1, 4, 9, 16, 25}

>>>my_set = {x*2 for x in ["A", "B", "A", 2, 4, 2] if str(x).isdigit()}  #提取数字
>>>print(my_set)
{8, 4}

 

 

生成器推导式

尝试通过已有序列快速生成满足条件的元组时,产生的是一个生成器对象 。

生成器是一个用来创建序列的对象,可以迭代出一个庞大的序列。每次迭代生成器时,会记录上次调用的位置,返回下一个值。可以通过tuple()、list()转换成元组或者列表。

访问生成器的元素可以通过生成器对象__next__()方法系统next()方法。

  • 语法形式:

表达式 for 表达式的变量 in 已有序列  ( if  过滤条件 )

示例代码如下:

my_list = (i * i for i in range(6))
print(my_list)

print(my_list.__next__())  #使用生成器__next__()方法逐个访问
print(my_list.__next__())
print('===========')

print(next(my_list))  #使用系统方法next()逐个访问
print(next(my_list))
print('===========')

#for循环打印元素
for each in my_list:
    print(each)
print('===========')

'''
print(my_list.__next__())  #迭代结束后,再使用__next__()会报错

print(next(my_list))  #使用系统next()方法不会报错,同时也不会有显示
'''

程序运行结果: 

<generator object <genexpr> at 0x000001A1E8D563B0>

0
1
===========
4
9
===========
16
25
===========

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值