在Python中,用[ ]标识列表,并用逗号分隔其中的元素。
如果让Python将列表打印出来,Python将打印列表的内部表示,包括方括号。
>>> bicycles = ['trek','cannondale','redline','specialized']
>>> print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
访问列表元素
要访问列表元素,可指出列表的名称,再指出元素的索引,并将后者放在方括号中。
>>> print(bicycles[1].title())
Cannondale
访问最后一个元素,通过将索引指定为-1
>>> print(bicycles[-1])
specialized
修改列表元素
>>> bicycles[0]="haahhaha"
>>> print(bicycles)
['haahhaha', 'cannondale', 'redline', 'specialized']
在列表中添加元素
1、在列表末尾添加元素用append()方法
>>> bicycles.append("kokoko")
>>> print(bicycles)
['haahhaha', 'cannondale', 'redline', 'specialized', 'kokoko']
2、在列表中插入元素用insert()方法
>>> bicycles.insert(0,"wowowowo")
>>> print(bicycles)
['wowowowo', 'haahhaha', 'cannondale', 'redline', 'specialized', 'kokoko']
在这个示例中,值“wowowo”被插入到了列表开头,方法insert()在索引0处添加空间,并将值“wowowo”存储到这个地方。这种操作将列表中既有的每个元素都右移一个位置。
3、从列表中删除元素
如果知道要删除的元素在列表中的位置,使用del语句删除元素
>>> del bicycles[0]
>>> print(bicycles)
['haahhaha', 'cannondale', 'redline', 'specialized', 'kokoko']
要将元素从列表中删除,并接着使用它的值,使用pop()
>>> print(bicycles)
['haahhaha', 'cannondale', 'redline', 'specialized', 'kokoko']
>>> popped_bicycles=bicycles.pop()
>>> print(bicycles)
['haahhaha', 'cannondale', 'redline', 'specialized']
>>> print(popped_bicycles)
kokoko
输出表明,列表末尾的值“kokoko”已删除,它现在被赋给了变量popped_bicycles
实际上,可以使用pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可。
>>> bicycles.pop(1)
'cannondale'
如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用pop()方法。
4、根据值删除元素
有时候,你不知道要从列表中删除的值所处的位置。如果只知道要删除的元素的值,可使用方法remove()
>>> print(bicycles)
['haahhaha', 'redline', 'specialized']
>>> new = 'redline'
>>> bicycles.remove(new)
>>> print(bicycles)
['haahhaha', 'specialized']
>>> print(new)
redline
值'redline'已经从列表中删除,但可通过变量new来访问它
注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用for循环来确保将每个值都删除。
下面是一些练习
1、如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少三个你想邀请的人,然后使用这个列表打印消息,邀请这些人与你共进晚餐。
>>> person=['baba','mama','jiejie','nainai','yeye']
>>> print(f"{person[0]} '我想邀请你来共进晚餐'")
baba '我想邀请你来共进晚餐'
>>> print(f"{person[1]} 我想邀请你来共进晚餐")
mama 我想邀请你来共进晚餐
>>> print(f"{person[2]} 我想邀请你来共进晚餐")
jiejie 我想邀请你来共进晚餐
>>> print(f"{person[3]} 我想邀请你来共进晚餐")
nainai 我想邀请你来共进晚餐
>>> print(f"{person[4]} 我想邀请你来共进晚餐")
yeye 我想邀请你来共进晚餐
2、你刚得知有位嘉宾无法赴约,因此你需要另外邀请一位嘉宾,并指出哪位嘉宾无法赴约。修改嘉宾名单,将无法赴约的嘉宾姓名替换为新邀请的嘉宾的姓名。
>>> print(person[4]+"不能赴约!")
yeye不能赴约!
>>> person[4]='laoye'
>>> print(person)
['baba', 'mama', 'jiejie', 'nainai', 'laoye']
3、你刚找到了一个更大的餐桌,可容纳更多的嘉宾。
使用insert()将一位新嘉宾添加到名单开头。
使用insert()将另一位新嘉宾添加到名单中间。
使用append()将最后一位新嘉宾添加到名单末尾。
>>> person.insert(0,'biaojie')
>>> person.insert(2,'biaodi')
>>> person.append('biaomei')
>>> print(person)
['biaojie', 'baba', 'biaodi', 'mama', 'jiejie', 'nainai', 'laoye', 'biaomei']
4、你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾,
使用pop()不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。
对于余下两位嘉宾中的每一位,都打印一条消息,指出他仍然在受邀人之列。
使用del语句将最后两位嘉宾从名单中删除,让名单编程空的。打印该名单,核实程序结束时名单确实是空的。
>>> print(person.pop()+message)
biaomei很抱歉,不能邀请你共进晚餐
>>> print(person.popo()+message)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'popo'
>>> print(person.pop()+message)
laoye很抱歉,不能邀请你共进晚餐
>>> print(person.pop()+message)
nainai很抱歉,不能邀请你共进晚餐
>>> print(person.pop()+message)
jiejie很抱歉,不能邀请你共进晚餐
>>> print(person.pop()+message)
mama很抱歉,不能邀请你共进晚餐
>>> print(person.pop()+message)
biaodi很抱歉,不能邀请你共进晚餐
>>> for p in person:
... print(p+" welcome!")
...
biaojie welcome!
baba welcome!
>>> del person
>>> print(person)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'person' is not defined
使用方法sort()对列表永久排序
>>> cars=['bmw','audi','toyota','subaru']
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'subaru', 'toyota']
方法sort()永久性地修改列表元素的排列顺序。现在汽车是按字母顺序排列的。再也无法恢复到原来的排列顺序。
还可以按与字母顺序相反的顺序排列列表元素,只需向sort()方法传递参数reverse=True即可。
>>> cars.sort(reverse=True)
>>> print(cars)
['toyota', 'subaru', 'bmw', 'audi']
使用函数sorted()对列表临时排序,调用sorted()后,列表元素的排列顺序并没有变。
函数reverse()不是按与字母顺序相反的顺序排列顺序,而只是反转列表元素的排列顺序。
确定列表的长度
>>> len(cars)
4