python基础——推导式

python编码一直都追求简洁明了式的风格。因此,python对于常用的数据结构都提供的相关的推导式,用来简化数据结构过程的代码复杂程度。

  • 常用推导式:列表推导式、字典推导式、集合推导式、生成器推导式

1. 列表推导式

列表推导式是最常用的一种推导式。列表推导式是通过特定格式构造列表这一数据结构的过程。

lis = [(i,j) for i in range(8) for j in range(8) if i * j % 7 == 6]
print(lis)     #结果:[(1, 6), (2, 3), (3, 2), (4, 5), (5, 4), (6, 1)]

补充:

  • python的range()函数可用来创建一个整数列表,一般用在 for 循环中.

  • range()构成:range(start, stop[, step])

start: 计数从start开始,默认是从0开始(闭区间),:range(3)等价于range(0,3)

stop: 计数到stop结束,但不包括stop(开区间).:range(0,3)[0, 1, 2],不包含3

step:步长,相邻两个值的差值,默认为1.:range(0,3)等价于range(0, 3, 1)

没有range(),列表推导式的可读性和简洁性将会大打折扣。

2. 字典推导式

字典推导式通过构建键值对向字典中填充内容,并生成字典对象。

strs = ['A test','something','paris']
d = {i: s for i,s in enumerate(strs)}        # 创建字典
d.update({s: i for i,s in enumerate(strs)})  # 更新字典
print(d)   # 结果输出:{0: 'A test', 1: 'something', 2: 'paris', 
           #           'A test': 0, 'something': 1, 'paris': 2}

补充:

  • enumerate(sequence, [start=0])
sequence :一个序列、迭代器或其他支持迭代对象。
start :下标起始位置。

3. 集合推导式

集合推导式和字典推导式十分相近,但是功能不同。主要作用:对列表中的数据进行去重。

a = {i**3 for i in [1,3,3,4,4,2,2,5,6]}
print(a)     # 结果:{64, 1, 8, 216, 27, 125}

补充:

  • 集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样.

4. 生成器推导式

生成器推导式是用于构造简单生成器,类似于列表推导式。

lis = [1,2,3,4,5,6]
a = (i*2 for i in lis if i % 2==0)
print('a:',a)   # 结果:a:  at 0x000001E4F0608AF0>
print(list(a))  # 结果:[4, 8, 12]

5. 总结

集合推导式就是将列表推导式的[]换成{},
生成器推导式就是将列表推导式的[]换成()
字典推导式就是推导出两个值并构建成键值对的样子

推导式
列表推导式 [ ]
集合推导式 { }
生成器推导式 ( )
字典推导式 键值对

你可能感兴趣的:(python基础知识,python)