filter(function, iterable)
function -- 判断函数。
iterable -- 可迭代对象
输出:
object at 0x0000022EC66BB128>
可以用list将filter类中的元素转化为列表输出
输出:[0,2,4,6,8]
lambda argument_list: expression
argument_list: 参数,expression:表达式
其中,参数可以是:
表达式可以是:
表达式可以是:
lambda argument_list: expression表示的是一个函数。这个函数叫做lambda函数
例如,为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以 在程序初始化时调用:time.sleep=lambda x:None。这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。例如,执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
#!/usr/bin/python
# -*- coding: utf-8 -*-
li = [1,2,3,4,5,6,7,8,9]
print [x**2 for x in li]
***********************************
print [x**2 for x in li if x>5]
***********************************
print dict([(x,x*10) for x in li])
***********************************
print [ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8 ]
***********************************
vec=[2,4,6]
vec2=[4,3,-9]
sq = [vec[i]+vec2[i] for i in range(len(vec))]
print sq
***********************************
print [x*y for x in [1,2,3] for y in [1,2,3]]
***********************************
testList = [1,2,3,4]
def mul2(x):
return x*2
print [mul2(i) for i in testList]
结果如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
[36, 49, 64, 81]
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90}
[(5, 9), (7, 9), (9, 9)]
[6, 7, -3]
[1, 2, 3, 2, 4, 6, 3, 6, 9]
[2, 4, 6, 8]
>>> m = list(range(100))#通过range函数创建一个0-99的数列,组成一个list赋值给m
>>> m
[0, 1, 2, 3, 4, 5, 6, ……,99]
>>> m[:10]#取前十个数
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> m[-10:]#取后十个数
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> m[10:20]#取前11-20个数
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> m[:10:2]#前十个数中,每2个数取一个
[0, 2, 4, 6, 8]
>>> m[5:15:3]#第6-15个数中,每3个数取一个
[5, 8, 11, 14]
>>> m[::10]#所有的数中,每10个数取一个
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> m[:]#什么都不写,可以原样复制一个list
[0, 1, 2, 3, 4, 5, 6, 7,……,99]
支持切片的:
举例:编写一个函数,实现strip()函数功能
>>> def trim(str):
... while str[:1]==' ':
... str = str[1:]
... while str[-1:] == ' ':
... str = str[:-2]
... return str
...
>>> trim(' abc hh welcome! ')
'abc hh welcome!'