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]
>>> 
posted @ 2020-09-15 21:22  海物chinono  阅读(125)  评论(0)    收藏  举报