列表生成式相关技巧,相关问题

来源:互联网 发布:单片机秒表课程设计 编辑:程序博客网 时间:2024/05/29 02:03

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

原创粉丝点击