python list.remove(),del()和filter & lambda
2015-08-11 01:35
435 查看
面试题之一。
以下代码能运行吗?
啊,因为随着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。
以下代码能运行吗?
用filter()和lambda实现上面的功能:
说下filter()吧:
filter(function,list),把list中的元素一个个丢到function中,Return True的元素组成一个new list。
说下lambda吧:
匿名函数,lambda a:b,其中a表示参数,b表示返回值。
上面就是lambda e : e%2 != 0 。
总结:
1、循环list的时候,最好用for i in list:,减少因为del()放下不易察觉的失误。
2、没事用用filter()和lambda,感觉挺装逼的。(这算什么总结嘛。)
以下代码能运行吗?
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中的闭包
- Python UnitTest 框架执行功能自动化测试
- 零基础学python-2.2 输入 input()
- 零基础学python-2.2 输入 input()
- Python绘制excel表格到邮件正文区并发送脚本实例
- python注释
- [python] python基础
- Python中的sorted函数以及operator.itemgetter函数
- PythonInstaller2.1打包单个exe遇到的问题,留个记录
- python 字典items和iteritems
- Python 字典(Dictionary) get()方法
- 小白学Python(四) 简单的用户管理系统v0.2
- [2015-08-09] python020
- python numpy sum函数用法
- python numpy argsort函数用法
- python __name__用法
- Apriori算法
- 升级MAC OX上的Python到3.4
- 自动化运维工具Ansible之Python API
- machine learning in coding(python):拼接原始数据;生成高次特征