列表:由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。
Python的列表相当于C语言的数组,但Python的列表操作要简单很多。
在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。
<一>访问列表元素
例如,下面的代码从列表names中提取第一个名字:
names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
print(names[0].title())#还可以对任何列表元素调用第2章介绍的字符串方法
<二>索引从0而不是1开始
在Python中,第一个列表元素的索引为0,而不是1。
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素:
names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
print(names[0])
print(names[1].title())
print(names[2])
print(names[3])
print(names[-1])
print(names[-2])
这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2 返回倒数第 二个列表元素,索引-3 返回倒数第三个列表元素,以此类推。
<三>使用列表中的值
names=['gong xin', 'qiao mei', 'guo jia le', 'song jia qi','li zheng zheng', 'xiao cui']
message_1=names[2].title()+", l'm your father!"
print(message_1)
我们使用names[2]的值生成了一个句子,并将其存储在变量message_1 中,输出是一个简单的句子,Guo Jia Le, l'm your father!
<四>确定列表元素个数
方法:len(list),使用函数len() 可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4。
演示代码:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars))
Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误。
<五>修改列表元素
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles[0] = 'ducati'
print(motorcycles)
结果为:
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
<六>列表添加新元素
1.在列表末尾添加元素:append()
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
motorcycles.append('ducati')
print(motorcycles)
结果为:
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
方法append() 让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append() 语句添加元素。
2.在列表中插入元素:使用方法insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)
结果为:['ducati', 'honda', 'yamaha', 'suzuki']
<七>从列表中删除元素
1. 使用del 语句删除元素(知道要删除的元素在列表中的位置,即知道其索引)
motorcycles = ['honda', 'yamaha', 'suzuki']
del motorcycles[1]
print(motorcycles)
结果为:['honda', 'suzuki']
2. 使用方法pop() 删除元素(可删除列表末尾的元素,并让你能够接着使用它)
有时候,你要将元素从列表中删除,并接着使用它的值。例如,你可能需要获取刚被射杀的外星人的 x 和 y 坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能 要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。
motorcycles = ['honda', 'yamaha', 'suzuki']
popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(popped_motorcycle) #能够接着使用已删除的值
结果为:['honda', 'yamaha'] suzuki
3. 弹出列表中任何位置处的元素(pop()+索引)
motorcycles = ['honda', 'yamaha', 'suzuki']
first_owned = motorcycles.pop(0)
print(first_owned)
结果为:honda
注:每当你使用pop() 时,被弹出的元素就不再在列表中了。
如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果你要在删除元 素后还能继续使用它,就使用方法pop() 。
4. 根据值删除元素(remove(),也可接着使用它的值)
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
too_expensive = 'ducati'
motorcycles.remove(too_expensive)
print(motorcycles)
print("\nA " + too_expensive.title() + " is too expensive for me.")
结果为:
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']
A Ducati is too expensive for me.
注:方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值
<八>组织列表
1.使用方法sort() 对列表进行永久性排序
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
结果为:['audi', 'bmw', 'subaru', 'toyota']
以按与字母顺序相反的顺序排列列表元素只需向sort() 方法传递参数reverse=True。
cars.sort(reverse=True)
['toyota', 'subaru', 'bmw', 'audi']
2.使用函数sorted() 对列表进行临时排序(不改变后续结果)
places=['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
print(places)
print(sorted(places))
print(places)
print(sorted(places,reverse=True))
['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
['london', 'moscow', 'new York', 'tai wan', 'xiang gang']
['new York', 'london', 'moscow', 'tai wan', 'xiang gang']
['xiang gang', 'tai wan', 'new York', 'moscow', 'london']
3.倒着打印列表
方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。
4.制定规则排序
MyList1.sort(key=len) #对列表按照元素的长度进行排序
<九>列表统计某个元素的个数
方法:count()
MyNum=MyList.count("math")#计算列表中‘math'元素的个数
<十>两个列表连接
方法:list1.extend(list2)将列表2加到列表1
MyList1.extend(MyList2)