python基础之列表

1.1 列表是什么

列表是由一系列按特定顺序排列的元素组成,鉴于列表通常包含多个元素,给列表指定一个复数的名称(如:names、citys)是个不错的习惯

1.1.1 访问列表

列表是有序集合,要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> print(citys[0])
beijing

1.1.2 列表索引从0开始而不是1

在Python中,第一个列表元素的索引为0,而不是1,即要访问列表的任何元素,都可将其位置减1,并将结果作为索引,如访问第三个元素,可用索引2

>>> print(citys[1])
shanghai
>>> print(citys[2])
shenzhen

python为访问最后一个列表元素提供一种特殊语法,通过将索引指定为-1,可返回列表中最后一个元素,这种约定也适用于其他负数索引,例如索引-2返回倒数第二个元素,

索引-3返回倒数第三个元素,以此类推

>>> print(citys[-1])
chongqing
>>> print(citys[-2])
shenzhen

1.2 修改、添加和删除元素

1.2.1修改列表元素

修改元素语法与访问元素语法类似,指定列表名和要修改的元素索引,再指定该元素的新值

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> print(citys[0])
beijing
>>> citys[0] = "hangzhou"
>>> print(citys[0])
hangzhou
>>> print(citys)
['hangzhou', 'shanghai', 'shenzhen', 'chongqing']

1.2.2在列表中添加元素

1.在列表末尾添加元素 使用方法append()

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> citys.append('guangzhou')
>>> print(citys)
['beijing', 'shanghai', 'shenzhen', 'chongqing', 'guangzhou']

2.在列表中插入元素 使用方法insert()可在列表任意位置添加新元素,因此需要指定新元素的索引和值

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> citys.insert(1, 'guangzhou')
>>> print(citys)
['beijing', 'guangzhou', 'shanghai', 'shenzhen', 'chongqing']

1.2.3从列表中删除元素

1.如果知道将要删除的元素在列表中的位置,可使用del语句

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> del citys[0]
>>> print(citys)
['shanghai', 'shenzhen', 'chongqing']

使用del可删除任意位置处的列表元素,条件是知道索引

2.有时候,你要将元素从列表中删除,并接着使用它的值,比如,飞机大战游戏中你将敌机击杀,将敌机从存活敌机列表中删除时,还要获取敌机的x、y轴坐标,以便在相应的位置

显示爆炸效果;或者web应用程序中将活跃用户删除,并将他加入到非活跃用户中

方法pop()可删除列表末尾的元素,并让你可以接着使用它,pop(弹出)源自于这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶的元素(类似手枪弹夹或羽毛球筒)

>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> pop_city = citys.pop()
>>> print(pop_city)
chongqing
>>> print(citys)
['beijing', 'shanghai', 'shenzhen']
pop()也可以用来删除列表中任意位置的元素,只要在括号中指定要删除元素的索引即可
>>> index_pop =citys.pop(1)
>>> print(index_pop)
shanghai
>>> print(citys)
['beijing', 'shenzhen']

当不确定使用del还是pop()时, 有一个很简单的判断标准:如果你要从列表中删除一个元素并不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用pop()方法。

3.根据值删除元素

有时候你不知道要从列表中删除的值的所在位置。如果你知道要删除的元素的值,可使用remove()方法

使用remove()方法删除元素时,你也可以接着使用它的值,因为知道元素的值,可事先将元素的值赋值给变量,虽然元素已被删除,但它的值还存储在变量中
>>> citys = ['beijing', 'shanghai','shenzhen','chongqing']
>>> rm_city = "beijing"
>>> citys.remove(rm_city)
>>> print(citys)
['shanghai', 'shenzhen', 'chongqing']

注意:remove()只删除第一个指定的值,如果要删除的值在列表中多次出现,就需要使用循环判断是否删除了所有这样的值

 1.3组织列表

1.3.1 使用sort()方法对列表进行永久性排序,默认按照字符编码顺序进行排序

>>> cars =['bmw','audi','subaru','tuyota']
>>> cars.sort()
>>> print(cars)
['audi', 'bmw', 'subaru', 'tuyota']
>>>

还可以按照与字母相反的顺序排列元素,只需要向sort()方法中加入reverse=True.

>>> cars.sort(reverse=True)
>>> print(cars)
['tuyota', 'subaru', 'bmw', 'audi']

1.3.2使用函数sorted()对列表进行临时排序,它能够让你按照特定的顺序显示元素,同时不影响它们在列表中的原始排列顺序

 同sort()方法相同,向sorted()函数中加入参数reverse=True, 可以按照与字母相反的顺序排列元素

>>> cars =['bmw','audi','subaru','tuyota']
>>> print(sorted(cars))
['audi', 'bmw', 'subaru', 'tuyota']
>>> print(cars)
['bmw', 'audi', 'subaru', 'tuyota']
>>> print(sorted(cars,reverse=True))
['tuyota', 'subaru', 'bmw', 'audi']

1.3.3 倒着打印列表

要反转列表元素的排列顺序可以使用方法reverse(),它可永久性的修改列表元素的排列顺序,但可随时恢复原来的排列顺序,只需再调用一次reverse()方法即可

注意:reverse()不是指按照与字母顺序相反的顺序排列元素,而只是反转列表元素的排列顺序

>>> cars =['bmw','audi','subaru','tuyota']
>>> cars.reverse()
>>> print(cars)
['tuyota', 'subaru', 'audi', 'bmw']
确定列表长度即列表包含的元素个数可用函数len(),注意它计算列表元素个数时从1开始,所以不用担心遇到差一的错误
>>> len(cars)
4

 

2.1操作列表

2.1.1使用range()函数和list()函数创建列表,函数range()让Python从你指定的第一个值开始数,并在到达第二个值后停止,不包含第二个值,如果将range()作为list()的参数,输出将作为一个数字列表

>>> numbers = list(range(1,6))
>>> numbers
[1, 2, 3, 4, 5]

函数range()还可以指定步长,如下函数range()从2开始数,然后不断的加2,直到达到或者超过终止值停止

>>> even_numbers = list(range(2,11,2))
>>> even_numbers
[2, 4, 6, 8, 10]

2.1.2对数字列表执行简单的统计

>>> digits = [1,2,3,4,5,6,7,8,9,0]
>>> max(digits)
9
>>> min(digits)
0
>>> sum(digits)
45

2.2.1列表解析(列表生成式)

写列表生成式时,指定一对方括号,里面把要生成的元素放在前面,后面跟for循环,for循环后面还可以选择加上if判断用作筛选

>>> [x*x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [x*x for x in range(1,11) if x % 2 ==0]
[4, 16, 36, 64, 100]
还可以使用两层循环,可以生成全排列:
>>> [m + n for m in 'abc' for n in 'qwe']
['aq', 'aw', 'ae', 'bq', 'bw', 'be', 'cq', 'cw', 'ce']

2.3.1切片

要创建切片,可指定一个起始索引和一个结束索引,同range()函数类似的,不包含结束索引

>>> citys =['beijing','shanghai','shenzhen','hangzhou','chengdu','chongqing','suzhou']
>>> print(citys[0:3])
['beijing', 'shanghai', 'shenzhen']

如果不指定起始索引,则自动从列表开头开始,同样的,不指定结束索引,则终止于列表末尾(包含最后一个元素)

>>> print(citys[:4])
['beijing', 'shanghai', 'shenzhen', 'hangzhou']
>>> print(citys[3:])
['hangzhou', 'chengdu', 'chongqing', 'suzhou']

负数索引返回离列表末尾相应距离的元素,同时省略起始结束索引,则可复制一个列表

>>> print(citys[-2:])
['chongqing', 'suzhou']
>>> copy_citys = citys[:]
>>> print(copy_citys)
['beijing', 'shanghai', 'shenzhen', 'hangzhou', 'chengdu', 'chongqing', 'suzhou']
posted @ 2019-01-21 23:42  重案组之虎曹达华  阅读(320)  评论(0编辑  收藏  举报