2007-08-27

 

Python Cookbook 4.3 返回列表中的元素



---------- Forwarded message ----------
From: 侯志刚 <hzgnpu@gmail.com>
Date: 2007-8-27 上午11:25
Subject: Python Cookbook 4.3 返回列表中的元素
To: hzgnpu@gmail.com

需求:

你有列表L和索引i,如果L[i]元素有效,你需要得到它的值,否则,返回默认值v,如果L是一个字典,你可以使用L.get(i,v),但是List没有get方法.

讨论:

很显然,我们需要自己写一个函数,最简单的就是最有效的:
def list_get(L, i, v=None):
if -len(L) <= i < len(L): return L[i]
else: return v
本节的函数首先判断i是否是一个有效的索引值,它使用了Python的列表索引规则:合法的索引值处于[-len(L),len(L))区间内.如果大部分的索引值都是有效的,可以尝试使用下面的方法:
def list_get_egfp(L, i, v=None):
try: return L[i]
except IndexError: return v
然而,除非几乎全部的索引都是有效的,上面的方法可能最多会比本节给出的函数慢4倍.
我也尝试了许多不同的方法来实现需求,可是不知道什么原因,总是比list_get慢一些,一般的规则:当你写Python代码时,使用简单而清晰的方法而不是复杂或紧密的代码.这样你的代码往往运行的更快 ,更一直,也会让你的代码更稳定,更易维护.


标签:


Comments: 发表评论



<< Home

This page is powered by Blogger. Isn't yours?