数据结构 / 列表
list
是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割。
列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是 可变的 数据类型,即这种类型是可以被改变的。
对象与类的快速入门
尽管我一直推迟讨论对象和类,但是现在对它们做一点解释可以使你更好的理解列表。我们会在相应的章节详细探索这个主题。
列表是使用对象和类的一个例子。当你使用变量i
并给它赋值的时候,比如赋整数5
,你可以认为你创建了一个类(类型)int
的对象(实例)i
。事实上,你可以看一下help(int)
以更好地理解这一点。
类也有方法,即仅仅为类而定义地函数。仅仅在你有一个该类的对象的时候,你才可以使用这些功能。例如,Python为list
类提供了append
方法,这个方法让你在列表尾添加一个项目。例如mylist.append('an item')
列表mylist
中增加那个字符串。注意,使用点号来使用对象的方法。
一个类也有域,它是仅仅为类而定义的变量。仅仅在你有一个该类的对象的时候,你才可以使用这些变量/名称。类也通过点号使用,例如mylist.field
。
使用列表
例9.1 使用列表
#!/usr/bin/python
# Filename: using_list.py
# This is my shopping listshoplist = [
'apple'
,
'mango'
,
'carrot'
,
'banana'
]
print
'I have'
,
len
(shoplist),
'items to purchase.'
print
'These items are:'
,
# Notice the comma at end of the line
for
item
in
shoplist:
print
item,
print
'\nI also have to buy rice.'
shoplist.append(
'rice'
)
print
'My shopping list is now'
, shoplist
print
'I will sort my list now'
shoplist.sort()
print
'Sorted shopping list is'
, shoplist
print
'The first item I will buy is'
, shoplist[
0
]
olditem = shoplist[
0
]
del
shoplist[
0
]
print
'I bought the'
, olditem
print
'My shopping list is now'
, shoplist
(源文件:code/using_list.py)
输出
$ python using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango', 'rice']
它如何工作
变量shoplist
是某人的购物列表。在shoplist
中,我们只存储购买的东西的名字字符串,但是记住,你可以在列表中添加 任何种类的对象 包括数甚至其他列表。
我们也使用了for..in
循环在列表中各项目间递归。从现在开始,你一定已经意识到列表也是一个序列。序列的特性会在后面的章节中讨论。
注意,我们在print
语句的结尾使用了一个 逗号 来消除每个print
语句自动打印的换行符。这样做有点难看,不过确实简单有效。
接下来,我们使用append
方法在列表中添加了一个项目,就如前面已经讨论过的一样。然后我们通过打印列表的内容来检验这个项目是否确实被添加进列表了。打印列表只需简单地把列表传递给print
语句,我们可以得到一个整洁的输出。
再接下来,我们使用列表的sort
方法来对列表排序。需要理解的是,这个方法影响列表本身,而不是返回一个修改后的列表——这与字符串工作的方法不同。这就是我们所说的列表是 可变的 而字符串是 不可变的 。
最后,但我们完成了在市场购买一样东西的时候,我们想要把它从列表中删除。我们使用del
语句来完成这个工作。这里,我们指出我们想要删除列表中的哪个项目,而del
语句为我们从列表中删除它。我们指明我们想要删除列表中的第一个元素,因此我们使用del shoplist[0]
(记住,Python从0开始计数)。
如果你想要知道列表对象定义的所有方法,可以通过help(list)
获得完整的知识。