面试题之中的一个。

下面代码能执行吗?

l = [1,2,3,4,5]
for i in range(0,len(l)):
print i
if l[i] % 2 == 0:
del l[i]
print l

结果:

Traceback (most recent call last):
File "D:\1.py", line 3, in <module>
if l[i] % 2 == 0:
IndexError: list index out of range

啊。由于随着del()语句的执行。list的元素越来越少。可是for已经定了[0,5):

i = 0,l[i] = 1不是偶数跳过

i = 1。l[i] = 2是偶数。l = [1,3,4,5]

i = 2,l[i] = 4是偶数。l=[1,3,5]

i = 3,l[i] 越界了,list index out of range。

 

下面代码能执行吗?

ll = [1,2,3,4,5]
for i in ll:
if i % 2 == 0:
ll.remove(i) print ll

结果:

>>>
[1, 3, 5]
>>>

啊。这段代码就没上述的问题。list有多少就取多少。

用filter()和lambda实现上面的功能:

print filter(lambda e:e%2!=0,ll)

结果:

>>>
[1, 3, 5]
>>>

啊,就这么简单。

说下filter()吧:

filter(function,list),把list中的元素一个个丢到function中。Return True的元素组成一个new list。

ll = [1,2,3,4,5]
def func(x):
return x % 2 != 0 print filter(func,ll)

说下lambda吧:

匿名函数,lambda a:b,当中a表示參数。b表示返回值。

上面就是lambda e : e%2 != 0 。

总结:

1、循环list的时候,最好用for i in list:。降低由于del()放下不易察觉的失误。

2、没事用用filter()和lambda,感觉挺装逼的。(这算什么总结嘛。)

python list.remove(),del()和filter &amp; lambda的更多相关文章

  1. python 内置函数 map filter reduce lambda

    map(函数名,可遍历迭代的对象) # 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6, ...

  2. Python内置函数之匿名(lambda)函数

    Python内置函数之匿名(lambda)函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数 #!/usr/bin/env python #_*_coding:utf ...

  3. python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件

    上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...

  4. python 链表表达式 map、filter易读版

    链表推导式 [x for x in x] 链表推导式提供了一个创建链表的简单途径,无需使用 map(), filter() 以及 lambda.返回链表的定义通常要比创建这些链表更清晰.每一个链表推导 ...

  5. python一些内建函数(map,zip,filter,reduce,yield等)

    python一些内建函数(map,zip,filter,reduce,yield等) map函数 Python实际上提供了一个内置的工具,map函数.这个函数的主要功能是对一个序列对象中的每一个元素应 ...

  6. 小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

    小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: ...

  7. Python内置函数之filter map reduce

    Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...

  8. python中的del

    python中的del,只删除变量,不删除数据,具体表现为: a=1,c=a,del a,(c=1) 和 a = [1,2,3,4,5] b= a[0] del a[0] print a ([2,3, ...

  9. 小甲鱼零基础python课后题 P22 021函数:lambda表达式

    0.请使用lambda表达式将下边函数转变为匿名函数 def fun_A(x,y=3): return x*y 答: lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函数 la ...

随机推荐

  1. Java字符串格式化输入({0}/%s)

    用法: System.out.println(MessageFormat.format("{0}{1}",1,2)); System.out.println(String.form ...

  2. Do waiting or suspended tasks tie up a worker thread?

      https://blogs.msdn.microsoft.com/askjay/2012/07/29/do-waiting-or-suspended-tasks-tie-up-a-worker-t ...

  3. rust安装

    http://blog.csdn.net/teamlet/article/details/50838996

  4. js中getBoundingClientRect()的用法介绍

    平时经常获取一个div的位置,用了定位,取位置还好,在不用定位的情况下,计算一个div在页面的距离,就可以用到getBoundingClientRect()方法. getBoundingClientR ...

  5. Luci实现框架

    转自:http://www.cnblogs.com/zmkeil/archive/2013/05/14/3078774.html 1.总述 上一篇总结了uhttpd的工作方式,openwrt中利用它作 ...

  6. jQuery中resetForm与clearForm的区别?

    reset是重置成最初状态,最初状态是可能有默认值的clear是清空form控件的值

  7. [Git] git revert ( revert commit 和 revert merge)

    转载自:http://blog.csdn.net/qinjienj/article/details/7621887 我们难免会因为种种原因执行一些错误的commit / push,git提供了reve ...

  8. 使用 session_destroy() 销毁session文件时 报 Trying to destroy uninitialized session 错误解决办法

    在使用  sessio_destroy() 销毁session文件的时候,必须要先使用session_start()   来开启session 后才能删除session文件

  9. 【Django】依赖auth.user的数据库迁移,以及admin用户非交互式创建

    admin用户非交互式创建: echo "from django.contrib.auth.models import User; User.objects.create_superuser ...

  10. JMS与Spring之一(用JmsTemplate同步收发消息) --转

    转自:http://blog.csdn.net/moonsheep_liu/article/details/6683190