admin 管理员组

文章数量: 887007

python 基础便利操作

python 便利操作

列表推导式

通常我们生成一个列表:

def fun(x):return x ** 2
l = []
for i in range(5):l.append(fun(i))

实际上可以通过列表推导式来进行简化:[* for i in *]

[fun(i) for i in range(5)]

同时,列表推导式还支持多层嵌套:

In:	[m + '_' + n for m in ['a','b'] for n in ['v','e']]
Out:['a_v', 'a_e', 'b_v', 'b_e']

条件赋值

举一个例子,截断列表中超过5的元素,即超过5的用5代替,小于5的保留原来的值:

In:		L = [1, 2, 3, 4, 5, 6, 7][i if i <= 5 else 5 for i in L]
Out:	[1, 2, 3, 4, 5, 5, 5]

匿名函数与map方法

函数的定义一般具有清晰的映射关系,我们可以用匿名函数的方式进行简洁的表示

fun = lambda x : x ** 2

但显然我们违背了“匿名” 的 含义,许多场合我们无需多处调用一个函数,所以我们往往不会关心函数的名字,只关心函数的映射关系。

(lambda x: x ** 2)(8)
[(lambda x: x ** 2)(i) for i in range(5)]

而上述关于列表推导式的匿名函数映射,我们通过map函数来实现。map返回一个map对象,需要通过list转化为列表

list(map(lambda x, y:str(x)+"_"+y,range(5),list('abcde')))

zip 对象与 enumerate 方法

  • zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,它返回了一个zip对象,通过tuple, list可以得到相应的打包结果
l1 = ('avd')
l2 = ('efsf')
list(zip(l1,l2))
[('a', 'e'), ('v', 'f'), ('d', 's')]
for i,v in zip(range(len(l)),l):print(i,' ',v,)
0   a
1   v
2   r
3   d
  • enumerate是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号
l = list('avrd')
for i, v in enumerate(l):print(i,v)
0   a
1   v
2   r
3   d

本文标签: python 基础便利操作