list操作
2014-03-25 05:33
260 查看
list是有序且可變群集(Collection),在 Python 中,
[1,2,3]這樣的語法,即可建立含元素 1、2、3 而索引 0、1、2 的
list實例。
list與先前介紹過的
string享有共同的操作。
len傳回
list長度;
in可測試某元素是否在
list中;
+可以用來串接兩個
list;
*可用來複製出指定數量的
list。
[]可以指定索引,用以從
list中取得元素,負索引是從最後一個元素計數,使用
[]來切割
list或許是最有用的功能。其他操作還有…
1234567 | >>>[ 0 ] * 10 [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] >>> ',' .join([ 'justin' , 'caterpillar' , 'openhome' ]) 'justin,caterpillar,openhome' >>>list( 'justin' ) [ 'j' , 'u' , 's' , 't' , 'i' , 'n' ] >>> |
List 解析介绍
>>>li = [1,9,8,4]>>>[elem*2 for elem in li]
[2,18,16,8]>>>li
[1,9,8,4]>>>li = [elem*2 for elem in li]
>>>li[2,18,16,8]
return ";".join(["%s=%s" % (k,v) for k,v in params.items()])在我们继续之前有一个有趣的地方。我一直在重复函数是对象,字符串是对象,每个东西都是对象的概念。您也许认为我的意思是说字符串值 是对象。但是不对,仔细地看一下这个例子,您将会看到字符串";" 本身就是一个对象,您在调用它的join 方法。总之,这里的 join 方法将 list 中的元素连接成单个字符串,每个元素用一个分号隔开。分隔符不必是一个分号;它甚至不必是单个字符。它可以是任何字符串。
判断一个 list 是否为空
传统的方式:if len(mylist): # Do something with my listelse: # The list is empty由于一个空 list 本身等同于 False,所以可以直接:
if mylist: # Do something with my listelse: # The list is empty
遍历 list 的同时获取索引
传统的方式:i = 0for element in mylist: # Do something with i and element i += 1这样更简洁些:
for i,element in enumerate(mylist): # Do something with i and element pass
list 排序
在包含某元素的列表中依据某个属性排序是一个很常见的操作。例如这里我们先创建一个包含 person 的 list:class Person(object): def __init__(self,age): self.age = agepersons = [Person(age) for age in (14,78,42)]传统的方式是:
def get_sort_key(element): return element.agefor element in sorted(persons,key=get_sort_key): print "Age:",element.age更加简洁、可读性更好的方法是使用 Python 标准库中的 operator 模块:
from operator import attrgetterfor element in sorted(persons,key=attrgetter('age')): print "Age:",element.ageattrgetter 方法优先返回读取的属性值作为参数传递给 sorted 方法。operator 模块还包括 itemgetter 和 methodcaller 方法,作用如其字面含义。
相关文章推荐
- TDD中的单元测试写多少才够?
- Android 通过httpclient请求web服务器,并解决用户登录session保持
- [SQL] cast 与 convert 都在什么情况下使用
- [SQL]不知道
- 独立第二天
- debian编译内核时err: line 65 dpkg-gencontrol command not found
- [SQL]一组数据中Name列相同值的最大Je与最小je的差
- [SQL]CASE用户数据统计
- RIPv1和v2综合实验(CCNP阶段) 推荐
- OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之三
- OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之二
- OpenStack Cinder服务启动过程中的资源加载和扩展源码解析之一
- python nltk 学习笔记(3) processing raw text
- man stdio
- vim 指令備忘錄
- 反射ACL的学习心得
- jQuery 密码验证 字母加数字或符号的组合密码,不能单独使用数字、字母或字符
- CSS中调用ttf文件中的字体
- python nltk 学习笔记(2)
- Android学习笔记:注册权限大全