Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1695386
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: Python/Ruby

2008-10-11 20:18:27

过滤列表

Python
有一个内建 filter 函数,它接受两个参数:一个函数和一个列表,返回一个列表。
filter 返回的列表将会包含可以令该函数返回真(true)的传入列表中的元素。
例如
def foo(n):
    return n>10

>>>filter(foo, [100,-10,3,20,0,1])
[100,20]

当然,可以以遍历列表的形式晚上上述工作。但filter更清晰,易懂。试图在循环中改变数据结构是很容易出问题的。

关联列表

map 函数是filter的伴侣,map 接受一个函数和一个列表作为参数,并以列表中每个元素顺序地调用函数返回一个新的列表。
def foo(n):
    return n*2

>>>map(foo, [1,3,5]
[2,6,8]

数据中心思想编程
使用 mapfilter 的一个好处是强迫你围绕数据进行思考。
费力不讨好的编程不重要,数据重要。 并且数据并不难,他们不过就是数据。 如果多了,就过滤。 如果不是我们要的,就关联。 聚焦在数据上,摒弃费力的劳作。少用for循环,多用map或filter。

动态载入模块

正常的导入模块:import module 语法查看搜索路径寻找已命名模块并以名字导入它们。

内建 __import__ 函数与 import 语句的既定目标相同,但它是一个真正的函数,并接受一个字符串参数。
>>>moduleNames = ['sys','os','re']
>>>modules = map(__import__, moduleNames)
[, , ]
>>>modules[0].version
'2.4.4 (#37, Oct 18 2006, 10:24:37) [MSC vi.1310 32 bit (Intel)]'
>>>import sys
>>>sys.version
'2.4.4 (#37, Oct 18 2006, 10:24:37) [MSC vi.1310 32 bit (Intel)]'




阅读(1503) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~