Python程序题?

L=[x for x in map(fibs,range(10))]是什么意思?

题主你好,

L=[x for x in map(fibs,range(10))] 涉及到两个重点知识:

    a. 列表推导(list comprehension);

    b. map函数的作用;

---------------

    先说列表推导,最简单的列表推导其实就是for循环的简写形式,举例来说:

上面这三句,如果用列表推导的形式写:

    [num for num in range(10)]   

上面二者是等价的, 可以看出列表推导的形式,相比常规形式,省略了空列表的声明语句以及元素的追加语句

*.还有一个比较常见的形式是,for和if同时存在的情形:

使用列表推导的形式:

    [num for num in range(10) if num%2==0]

这两种形式的转换规则题主仔细研究一下应该就能弄明白,再往清楚说我也说不清楚

*.当然还有更复导的列表推导,这里就不细说了, 上面这两种应该是最常见的

2.再说map函数, map函数定义为:

    map(函数名, 可迭代对象)

返回值同参数2一样,也是一个可迭代对象

我先给你举个例子,你用这个例子去理解map函数:

比方说有一个盒子叫range(10),它里面有10个元素分别为0,1,2,3,4,5,6,7,8,9, 然后有一个机器叫increment,这个机器的作用是对range(10)这个盒子中的每个元素加1, 还有一个盒子叫result,它是用来存储被increment加工过的元素, 因为range(10)里面的元素为0-9,所以 result中的元素就是1-10, 而我们把从range(10)这个盒子中取元素让机器加工再将加工后的元素放到result盒子中的过程叫做map.


所以再回到题主的问题: L=[x for x in map(fibs,range(10))],

我们把题主的代码改个形式:

tmp = map(fibs, range(10))

L = [x for x in tmp]

这样一来应该就好理解了:

对于tmp = map(fibs, range(10)):

range(10)是第一个盒子, 它里面有10个元素0-9;

fibs是那个机器, 用来加工range(10)这个盒子中的每一个元素;

map()函数表示的是这个加工的过程;

tmp表示第二个盒子, 即存储的是range(10)这个盒子被fibs机器加工后的结果,即1,2,3,4,5,6,7,8,9,10;

---

对于L = [x for x in tmp], 其实就等价于:


希望可以帮到题主, 欢迎追问.

温馨提示:答案为网友推荐,仅供参考