Python基本语法总结(四)列表操作
访问列表元素
访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
>>>bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>>print(bicycles[0])
trek
>>> print(bicycles[-1])
specialized
>>>
修改列表元素
要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> motorcycles[0]='ducati'
>>> print(motorcycles)
['ducati', 'yamaha', 'suzuki']
>>>
在列表中添加元素
方法append()将元素'ducati'添加到了列表末尾,而不影响列表中的其他所有元素。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> motorcycles.append('ducati')
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki', 'ducati']
使用方法insert()可在列表的任何位置添加新元素,为此需要指定新元素的索引和值。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> motorcycles.insert(1,'ducati') # 在索引为1的地方插入元素
>>> print(motorcycles)
['honda', 'ducati', 'yamaha', 'suzuki']
>>>
在列表中删除元素
如果知道要删除的元素在列表中的位置,可使用del语句。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> del motorcycles[1]
>>> print(motorcycles)
['honda', 'suzuki']
>>>
使用方法pop()删除元素,可删除列表末尾的元素,并让你能够接着使用它。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> print(motorcycles)
['honda', 'yamaha', 'suzuki']
>>> popped_motorcycle = motorcycles.pop()
>>> print(motorcycles)
['honda', 'yamaha']
>>> print(popped_motorcycle)
suzuki
>>>
可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素
的索引即可。
>>> motorcycles = ['honda', 'yamaha', 'suzuki']
>>> second_owned = motorcycles.pop(1)
>>> print(motorcycles)
['honda', 'suzuki']
>>> print(second_owned)
yamaha
>>>
如果你知道要删除的元素的值,可使用方法remove()。(如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。)
>>> motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati','suzuki']
>>> motorcycles.remove('suzuki')
>>> print(motorcycles)
['honda', 'yamaha', 'ducati', 'suzuki'] # 只删除了第一个
>>>
对列表进行排序
Python方法sort()让你能够较为轻松地对列表进行排序。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'subaru', 'toyota']
>>>
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> print(sorted(cars))
['audi', 'bmw', 'subaru', 'toyota']
>>> print(cars) # 原列表不变
['bmw', 'audi', 'toyota', 'subaru']
>>>
将列表倒序
要反转列表元素的排列顺序,可使用方法reverse()。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> print(cars)
['bmw', 'audi', 'toyota', 'subaru']
>>> cars.reverse()
>>> print(cars)
['subaru', 'toyota', 'audi', 'bmw']
>>>
遍历列表
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> for idx in range(len(cars)): # 利用下表遍历列表
print('idx:',idx,'--->','element:',cars[idx])
idx: 0 ---> element: bmw
idx: 1 ---> element: audi
idx: 2 ---> element: toyota
idx: 3 ---> element: subaru
>>> for element in cars: # 利用元素遍历列表
print(element)
bmw
audi
toyota
subaru
>>>
对列表切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。例如要指定列表的第10-15个元素,可指定索引分别为9(10-1)和15;要指定列表的第1-3个元素,可指定索引分别为0(1-1)和3。如果没有指定第一个索引,Python将自动从列表开头开始;如果没有指定第二个索引,Python将自动截取到列表结尾
>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> print(players[0:3]) # 指定第1-3个元素
['charles', 'martina', 'michael']
>>> print(players[1:4]) # 指定第2-4个元素
['martina', 'michael', 'florence']
>>> print(players[2:]) # 指定第3个及之后元素
['michael', 'florence', 'eli']
>>> print(players[:2]) # 指定第2个及之前元素
['charles', 'martina']
>>>
对列表进行复制
若直接使用赋值运算符进行赋值,实际上类似浅拷贝,两个变量最终指向同一个列表。若想深拷贝,使用切片[:]。
>>> players = ['charles', 'martina', 'michael', 'florence', 'eli']
>>> players_1 = players # 浅拷贝
>>> players_2 = players[:] # 深拷贝
>>> players[2]='changed'
>>> print(players)
['charles', 'martina', 'changed', 'florence', 'eli']
>>> print(players_1) # 元素发生改变
['charles', 'martina', 'changed', 'florence', 'eli']
>>> print(players_2) # 元素没有发生改变
['charles', 'martina', 'michael', 'florence', 'eli']
>>>
利用列表的推导式创建列表
列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个推导序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
"""
语法格式为[ <expr1> for k in L if <expr2> ]
等价于:
returnList=[]
for k in L:
if <expr2>:
returnList. append(<expr1>)
return returnList
"""
>>> vec=[2,4,5,7,12]
>>> a=[3*x for x in vec]
>>> a
[6, 12, 15, 21, 36]
>>> b=[x**2 for x in vec if x%2]
>>> b
[25, 49]
>>> vec1=[2,4,6]
>>> vec2=[4,3,-9]
>>> c=[x*y for x in vec1 for y in vec2 if x*y>0]
>>> c
[8, 6, 16, 12, 24, 18]
>>>

浙公网安备 33010602011771号