上篇文章我们简单介绍了一下:Python变量和简单的数据类型2.1、列表是什么
列表:由一系列按特定顺序排列的元素组成。
Python中使用:方括号( [ ] )来标识列表,并用逗号来分隔其中的元素。
eg:列表包含几种自行车,Tupb_bicycles.py

>>> Tupb_bicycles = ['trek','cannondale','redline','specialized']
>>> print(Tupb_bicycles)

输出结果:['trek', 'cannondale', 'redline', 'specialized']

2.1.1、访问元素列表
列表是有序的集合,访问列表中任何元素,需将元素的位置或者索引告诉Python即可。
eg:从列表Tupb_bicycles提取第一款自行车。

>>> Tupb_bicycles = ['trek','cannondale','redline','specialized']
>>> print(Tupb_bicycles[0].title())
输出结果:Trek

>>> Tupb_bicycles = ['trek','cannondale','redline','specialized']
>>> print(Tupb_bicycles[0])
输出结果:trek

2.1.2索引从0而不是1开始
Python中,第一个列表元素的索引为0,而不是1。
这与列表操作的底层实现相关。
第二个列表元素为1。根据这种简单的技术方式,要访问列表的任何元素,都可以将其位置减1,并将结果作为索引。

>>> Tupb_bicycles = ['trek','cannondale','redline','specialized']
>>> print(Tupb_bicycles[1])

输出结果:cannondale

>>> print(Tupb_bicycles[3])

输出结果:specialized

Python访问最后一个列表元素提供了一个特殊语法。
通过将索引指定为-1,可以让Python返回最后一个元素。

>>> Tupb_bicycles = ['trek','cannondale','redline','specialized']
>>> print(Tupb_bicycles[-1])
输出结果:specialized

这种约定也适用于其他负数索引.
eg:索引-2返回倒数第二个列表元素。
2.1.3使用列表中的各个值
eg:使用拼接根据列表中的值来创建消息。

Tupb_bicycles = ['trek','cannondale','redline','specialized']
tupb_message = "My first bicycle was a " + Tupb_bicycles[0].title() + "."
print(tupb_message)

2.2、修改、添加和删除元素
创建的大多数列表都是动态的,意味着列表创建后,将随着程序的运行增删元素。
2.2.1、修改列表元素
要修改列表元素,可以指定列表名和要修改的元素的索引,再指定该元素的新值。
eg:name.py

>>> name = ['zhangsan','lisi','wangwu']
>>> print(name)

输出结果:['zhangsan', 'lisi', 'wangwu']

>>> name[0] = 'Tupb'
>>> print(name)

输出结果:['Tupb', 'lisi', 'wangwu']

2.2.2、在列表中添加元素

  1. 在列表末尾添加元素
    使用方法append() 将元素添加到列表的末尾
>>> name = ['zhangsan','lisi','wangwu']
>>> print(name)

输出结果:['zhangsan', 'lisi', 'wangwu']

>>> name.append('Tupb')       #使用append将元素添加到末尾列表
>>> print(name)

输出结果:['zhangsan', 'lisi', 'wangwu', 'Tupb']
  1. 在列表中插入元素
    使用方法insert()可在列表中任何位置添加新元素。
>>> name = ['zhangsan','lisi','wangwu']
>>> name.insert(0,'Tupb')
>>> print(name)

输出结果:['Tupb', 'zhangsan', 'lisi', 'wangwu']

2.2.3、从列表中删除元素

  1. 使用del语句删除元素。
    del可以删除任何位置处的列表元素,条件是知道其索引。
>>> name = ['zhangsan','lisi','wangwu']
>>> print(name)

输出结果:['zhangsan', 'lisi', 'wangwu']

>>> del name[1]
>>> print(name)

输出结果:['zhangsan', 'wangwu']
  1. 使用pop()删除元素
    方法:pop()可以删除列表末尾的元素,并让你能够接着使用它。
    术语:弹出(pop)
    类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
>>> name = ['zhangsan','lisi','wangwu']
>>> print(name)
输出结果:['zhangsan', 'lisi', 'wangwu']
>>> poped_name = name.pop()   #删除的值存储在poped_name中
>>> print(name)
输出结果:['zhangsan', 'lisi']
>>> print(poped_name)
输出结果:wangwu

另一种使用方法eg:

>>> name = ['zhangsan','lisi','tupb']
>>> last_owned = name.pop()
>>> print("This book is " + last_owned.title() + "'s。")

结果:This book is Tupb's。
  1. 弹出列表中任何位置处的元素
    使用pop()来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引。
>>> name = ['zhangsan','lisi','tupb']
>>> last_owned = name.pop(0)
>>> print("This book is " + last_owned.title() + "'s。")

输出结果:This book is Zhangsan's。

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

  1. 根据值删除元素remove()
    如果不知道从列表中删除的值所处的位置,只知道要删除元素的值,可以使用方法remove()。
>>> name = ['zhangsan','lisi','tupb']
>>> print(name)
输出结果:['zhangsan', 'lisi', 'tupb']
>>> name.remove('tupb')
>>> print(name)
输出结果:['zhangsan', 'lisi']

使用remove()从列表中删除元素时,也可接着使用它的值。eg:

>>> name = ['zhangsan','lisi','tupb']
>>> print(name)
输出结果:['zhangsan', 'lisi', 'tupb']
>>> too_expensive = 'tupb'
>>> name.remove(too_expensive)
>>> print(name)
输出结果:['zhangsan', 'lisi']
>>> print("\nThis book is " + too_expensive.title() + "'s。")

输出结果:This book is Tupb's。

注意:方法remove()只删除第一个指定的值。如果要删除的值肯能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
2.3、组织列表
在创建的列表中,元素的顺序是无法预测的,因为你无法控制用户提交的数据。但你需要特定的顺序呈现出来。
2.3.1、使用方法sort()对列表进行永久性排序
Python中使用方法sort()对列表进行排序
eg:以下是列表中的元素是按照字母的顺序排列。

>>> name = ['zhangsan','alisi','tupb','baobao']
>>> name.sort()
>>> print(name)

输出结果:['alisi', 'baobao', 'tupb', 'zhangsan']

eg:列表中的元素按字母相反的顺序排列。
需项sort()方法传递参数reverse=True

>>> name = ['zhangsan','alisi','tupb','baobao']
>>> name.sort(reverse=True)
>>> print(name)

输出结果:['zhangsan', 'tupb', 'baobao', 'alisi']

注意:使用sort()方法对列表元素排列顺序的修改是永久性的。
2.3.2、使用函数sorted()对列表进行临时排序
保留列表元素原来的顺序,同时以特定的顺序呈现出来,可使用函数sorted()。
函数sorted():能按特定顺序显示列表元素,同时又不影响它们在列表中的原始排列顺序。

>>> hero = ['yang_guo' , 'xiao_longnv','guo_jing','huang_rong']
>>> print("They are heroes。")
They are heroes。
>>> print(hero)
['yang_guo', 'xiao_longnv', 'guo_jing', 'huang_rong']
>>> print("\nThey are heroes。")

They are heroes。
>>> print(sorted(hero))
['guo_jing', 'huang_rong', 'xiao_longnv', 'yang_guo']
>>> print(hero)
['yang_guo', 'xiao_longnv', 'guo_jing', 'huang_rong']
>>>

:调用函数sorted()后,列表元素的排列顺序没有变。
如果要字母相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。

  • 注意:在并非所有的值都是小写时,按字母顺序排列列表要复杂些。决定排列顺序时,有多种解读大写字母的方式,要指定准确的排列顺序,可能更为复杂,但大多数排序方式都基于本文介绍。
    2.3.3、倒着打印列表
    使用方法reverse(),可以反转列表中元素的排列顺序。
    方法reverse()永久性地修改列表元素的排列顺序,但可以随时恢复到原来的排列顺序,只需对列表再次掉用reverse()即可。
>>> hero = ['yang_guo' , 'xiao_longnv','guo_jing','huang_rong']
>>> print(hero)
['yang_guo', 'xiao_longnv', 'guo_jing', 'huang_rong']
>>> hero.reverse()  #调用reverse()方法。
>>> print(hero)
['huang_rong', 'guo_jing', 'xiao_longnv', 'yang_guo']
>>> hero.reverse()
>>> print(hero)  #再次调用reverse()方法。
['yang_guo', 'xiao_longnv', 'guo_jing', 'huang_rong']

2.3.4、确定列表的长度
Python中使用函数len()快速获取列表的长度。

>>> hero = ['yang_guo' , 'xiao_longnv','guo_jing','huang_rong']
>>> len(hero)
4

注意: Python计算列表元素时从1开始,因此确定列表长度时,应该不会遇到差一错误。
2.4、使用列表时避免索引错误
在时间的使用过程中,常常出现以下问题

  • 假如有三个元素,访问第三个索引。
    索引是从0开始的,只有第三个元素的索引为2。
>>> hero = ['yang_guo' , 'xiao_longnv','guo_jing']
>>> print(hero[3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

错误意味着Python无法理解你指定的索引。
如果访问最后一个列表中的元素,可以使用索引为“-1”

  • 假如元素为空,访问列表中的元素。
    此时你可以将列表中或其长度但因出来。