list操作
来源:互联网 发布:聚合数据 左磊 编辑:程序博客网 时间:2024/06/11 05:17
list
是有序且可變群集(Collection),在 Python 中,[1, 2, 3]
這樣的語法,即可建立含元素 1、2、3 而索引 0、1、2 的list
實例。
list
與先前介紹過的 string
享有共同的操作。len
傳回 list
長度;in
可測試某元素是否在 list
中;+
可以用來串接兩個list
;*
可用來複製出指定數量的list
。[]
可以指定索引,用以從list
中取得元素,負索引是從最後一個元素計數,使用[]
來切割 list
或許是最有用的功能。其他操作還有…
>>> [
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]
为了便于理解它,让我们从右向左看。li 是一个将要映射的 list。Python 循环遍历li 中的每个元素。对每个元素均执行如下操作:首先临时将其值赋给变量elem,然后 Python 应用函数elem*2 进行计算,最后将计算结果追加到要返回的 list 中。
需要注意是,对 list 的解析并不改变原始的 list。
将一个 list 的解析结果赋值给对其映射的变量是安全的。不用担心存在竞争情况或任何古怪事情的发生。Python 会在内存中创建新的 list,当对 list 的解析完成时,Python 将结果赋给变量。
您有了一个形如 key=value 的 key-value 对 list,并且想将它们合成为单个字符串。为了将任意包含字符串的 list 连接成单个字符串,可以使用字符串对象的join 方法。
下面是一个在 buildConnectionString 函数中连接 list 的例子:
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
在我们继续之前有一个有趣的地方。我一直在重复函数是对象,字符串是对象,每个东西都是对象的概念。您也许认为我的意思是说字符串值 是对象。但是不对,仔细地看一下这个例子,您将会看到字符串";" 本身就是一个对象,您在调用它的join 方法。
总之,这里的 join 方法将 list 中的元素连接成单个字符串,每个元素用一个分号隔开。分隔符不必是一个分号;它甚至不必是单个字符。它可以是任何字符串。
你需要记住的只是如果你想要复制一个列表或者类似的序列或者其他复杂的对象(不是如整数那样的简单 对象 ),那么你必须使用切片操作符来取得拷贝。如果你只是想要使用另一个变量名,两个名称都参考 同一个对象,那么如果你不小心的话,可能会引来各种麻烦。
l2=l1[:],例如:
- >>> l1=["hello","world"]
- >>> l2=l1[:]
- >>> print l1
- ['hello', 'world']
- >>> print l2
- ['hello', 'world']
- >>> l1[0]="world"
- >>> print l1
- ['world', 'world']
- >>> print l2
- ['hello', 'world']
判断一个 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.age
attrgetter 方法优先返回读取的属性值作为参数传递给 sorted 方法。operator 模块还包括 itemgetter 和 methodcaller 方法,作用如其字面含义。
- list操作
- list操作
- list操作
- list操作
- list操作
- list操作
- List操作
- List操作
- Spring RedisTemplate操作-List操作
- list box 操作
- list基本操作
- 用ajaxPro操作List
- java.util.list操作
- Python 列表(list)操作
- 对List的操作
- List的特殊操作
- list添加删除操作
- python list操作
- 黑马程序员—IO流部分基础知识总结
- debian编译内核时err: line 65 dpkg-gencontrol command not found
- 独立第二天
- 使用拷贝构造函数和赋值运算符的区别
- Android 通过httpclient请求web服务器,并解决用户登录session保持
- list操作
- 1078. Hashing (25)
- 释构函数的调用顺序
- Permutation Sequence -- LeetCode
- MySQL存储过程相互调用并获得错误码
- Binary Tree Postorder Traversal
- MySQL递归查询树状表的子节点、父节点
- VS C++ 程序中 waitkey 输入按键失效原因
- Datanode denied communication with namenode: DatanodeRegistration 解决办法