如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。
列表的表示
- 用方括号 [ ] 来表示列表,并用逗号来分隔其中的元素。
- 索引从0开始,用-1可表示倒数第一个元素 bicycles[-1]
>>>bicycles = ['trek', 'cannondale', 'redline', 'specialized']
>>>print(bicycles)
['trek', 'cannondale', 'redline', 'specialized']
修改、添加和删除元素
修改元素
>>>motorcycles = ['honda', 'yamaha', 'suzuki']
>>>motorcycles[0] = 'ducati'
print(motorcycles)
添加元素
- 末尾添加元素append( )
- 在列表中插入元素insert()
>>>motorcycles = ['honda', 'yamaha', 'suzuki']
>>> motorcycles.insert(0, 'ducati')
>>>print(motorcycles)
['ducati', 'honda', 'yamaha', 'suzuki']
删除元素
- 知道要删除的元素在列表中的位置,可使用del语句
>>>motorcycles = ['honda', 'yamaha', 'suzuki']
>>>del motorcycles[0]
>>>print(motorcycles)
['yamaha', 'suzuki']
- 方法pop() 可删除列表末尾的元素,或者在括号中指定要删除的元素的索引,使用后有返回值
如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续使用它,就使用方法pop()。
- 方法remove() 根据值删除元素(也是无返回值)
>>>mess = ['a','b','c']
>>>mess.remove('a')
>>>print(mess)
['b','c']
排序
- 方法 sort() 对列表进行永久性排序(按字母顺序排列,相反顺序用只需加sort(reverse=True))
- 函数 sorted() 对列表进行临时排序
- 方法reverse() 反转列表元素的排列顺序,永久性
确认长度
- 函数len()可快速获悉列表的长度
Python计算列表元素数时从1开始,因此确定列表长度时,你应该不会遇到差一错误
操作列表
遍历列表
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
alice
david
carolina
创建数值列表
- 函数 range() 生成序列数
for value in range(1,5):
print(value)
1
2
3
4
- 函数list() 将这些数字转换为一个列表
numbers = list(range(1,6))
print(numbers)
[1, 2, 3, 4, 5]
还能指定步长
even_numbers = list(range(2,11,2))
print(even_numbers)
[2, 4, 6, 8, 10]
常用计算函数
- 最大值:max()
- 最小值:min()
- 求和:max()
列表解析(简化生成列表)
f=[]
for i in range(1,11):
f.append(i**3)
print(f)
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
可简化为:
f=[i**3 for i in range(1,11)]
print(f)
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
切片
为了更加方便的提取元素,而不用循环一遍一遍提取
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])#从0开始3个元素
print(players[:3])#从头开始3个元素
print(players[1:])#从1开始到结尾
print(players[-2:])#最后2个元素
['charles', 'martina', 'michael']
['charles', 'martina', 'michael']
[ 'martina', 'michael', 'florence', 'eli']
['florence', 'eli']
列表复制的问题
复制一个列表,如果不用切片赋值,而直接等于,相当于指针,则2个列表指向同个元素
my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
friend_foods = my_foods
用了切片相当于新建了副本复制出去:
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
思考题
- 打印消息“Three items from the middle of the list are:”,再使用切片来打印列表中间的三个元素。
元组
- 元组不能单独修改元素值,使用圆括号来标识
- 但可以重新定义整个变量
代码规范
- PEP 8建议每级缩进都使用四个空格
- 建议每行不超过80字符
- 注释的行长都不超过72字符
- 要将程序的不同部分分开,可使用空行,一行足矣不要用三四个空行
原文链接:PEP8