1.用python实现一个list[1-100] 例如 [1, 2, 3,5,6,7,8,9.......]实现[[1,2,3],[4,5,6],[7,8,9]......]
a = list(range(1,1001))b=[a[x:x+3] for x in range(0,len(a),3)]
2.已知 列表li=[1,3,2,5,4] 找出列表中元素为偶数且下下标也为偶数的元素
第一种方法:b=[a[i] for i in range(0,len(li),2) if a[i]%2==0 ]
第二种方法:b=[ x for x in li if li.index(x)%2==0 and x%2==0] 输出b=[2,4]
如果把第二种方法中的and改成&输出结果为 b=[1,2,4] 求解为什么?????前者是在python交换模式运行的结果
3.匿名函数lambda
test = lanmbda x, y:x+y 该式子定义了一个匿名函数
上式可以理解为以下的意思
def test(x, y):
return x+y
4.列表推导式+匿名函数
li=[lambda :i for i in range(5)] li的结果为由5个匿名函数组成的列表
分析: 上式相当于下面的理解
li=[]
for i in range(5):
def func():
return i
li.append(func)
遍历li
for a in li:
print(a()) 结果为4,4,4,4,4
5. 继续扩展 :li=[lambda x=i :x for i in range(5)] li的结果为由5个匿名函数组成的列表
分析: 上式相当于下面的理解
li=[]
for i in range(5):
def func(x=i):
return i
li.append(func)
遍历li
for a in li:
print(a()) 结果为0,1,2,3,4
6.接着延伸 li=(lambda : i for i in range(5))
li=[]
for i in range(5):
def func():
yield i
li.append(func)
for a in li:
print(a()) 结果为0,1,2,3,4