时间:2018-11-02
作者:魏文应
一、列表
什么是列表
列表是用于存储一些有序数据对象。
创建列表
创建列表,通过中括号 [ ]
来创建列表:
my_list = []
print(type(my_list))
创建列表时,为列表指定元素:
my_list = [10, 2, 4, 7, 9]
print(my_list)
可以同一个列表存不同类型对象:
my_list = [10, None, 'hello', 1.2, True]
print(my_list)
列表索引
索引是从 0 开始的整数,列表第一个位置索引为 0,第二个位置索引为1 :
my_list = [10, 2, 4, 7, 9]
print(my_list[0])
上面就是打印第一个元素 10 。可以通过 len()
函数获取列表的索引:
my_list = [10, 2, 4, 7, 9]
print(len(my_list))
负数索引
负数表示倒数第几个,比如 -2
负2,表示倒数第 2 个元素:
students = ['天龙八部', '倚天屠龙记', '侠客岛']
print(students[-2])
二、切片
切片,就是从现有列表中,获取一个子列表,比如:
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[1:4])
打印结果如下:
['倚天屠龙记', '侠客岛', '鹿鼎记']
通过切片获取指定的元素:
- 做切片操作是,总会返回一个新的列表,不会影响原来的列表。
- 通过切片获取元素时,包括起始位置的元素,不会包括结束位置 的元素。
省略参数
下面,是从索引1的位置,一直到最后:
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[1:])
下面则是,从开始的位置,一直到索引值是 3 的位置(不包括 3):
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[:3])
添加步长
语法:列表[起始:结束:步长]
比如:
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[0:5:2])
打印结果为:
['天龙八部', '侠客岛', '雪山飞狐']
也就是隔一个步长取一个。步长不能是 0 ,但 步长可以是负数,则从列表的后部往前倒着取:
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[::-1])
注意:负数时,如果有范围,则要这么写:
students = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(students[4:0:-1])
为什么要把 4 放在前面,0 放在后面呢?这是因为 [start:end:step]
,也就是start是起始位置,你倒着取,start当然是原来的最后一个参数啦。
三、列表操作
列表拼接
通过加号 +
实现:
my_list = [1, 2, 3] + [4, 5, 6]
print(my_list)
打印结果如下:
[1, 2, 3, 4, 5, 6]
列表重复
通过乘号 *
实现:
my_list = [1, 2, 3] * 3
print(my_list)
打印结果如下:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
元素检测
查看元素是否存在于列表中,使用 in
关键字:
my_list = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print('天龙八部' in my_list)
上面检测 '天龙八部'
这个元素是否在 my_list
这列表中,打印结果如下:
True
如果是检查某个元素是否 不存在 于列表中,使用 not in
关键字:
my_list = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print('天龙八部' not in my_list)
发现 '天龙八部'
在列表中,打印结果如下:
False
查看元素最大值和最小值
对于数值型列表,我们经常要找到其中的最大值或者最小值,例如:
arr = [1, 2, 3, 4, 5, 6, 7]
print(min(arr), max(arr))
函数 min()
取最小值, 函数 max()
取最大值,打印结果如下:
1 7
获取 index
获取索引值,例如:
my_list = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐']
print(my_list.index('天龙八部'))
这样,就会打印出元素 天龙八部
的索引值,打印结果如下:
0
如果元素在列表中有重复,它查找返回的是 首先索引到的索引值 。还可以指定索引范围:
my_list = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐', '天龙八部', '天龙八部']
print(my_list.index('天龙八部', 3, 7))
上面是在索引值为 3 到 7(不包括7)中的元素查找。
计算元素数目
统计指定元素在指定列表中出现的次数:
my_list = ['天龙八部', '倚天屠龙记', '侠客岛', '鹿鼎记', '雪山飞狐', '天龙八部', '天龙八部']
print(my_list.count('天龙八部'))
上面代码,统计了 天龙八部
这个元素个数,打印结果如下:
3
修改列表中的元素
修改列表中的某个元素:
stus = ['孙悟空', '沙和尚' ,'猪八戒', '唐僧', '蜘蛛精', '白骨精']
stus[0] = 'sunwukong'
print(stus)
将元素 孙悟空
修改为了 sunwukong
,打印结果如下:
['sunwukong', '沙和尚', '猪八戒', '唐僧', '蜘蛛精', '白骨精']
删除元素,删除列表中的某个元素:
stus = ['孙悟空', '沙和尚' ,'猪八戒', '唐僧', '蜘蛛精', '白骨精']
del stus[0]
print(stus)
上面代码,删除了元素 孙悟空
,打印结果如下:
['沙和尚', '猪八戒', '唐僧', '蜘蛛精', '白骨精']
可以同时修改列表的多个元素,通过 切片 实现,这时,给切片进行赋值时,只能使用序列 :
stus = ['孙悟空', '沙和尚', '猪八戒', '唐僧', '蜘蛛精', '白骨精']
stus[0:2] = ['红孩儿', '牛魔王']
print(stus)
同时修改了索引值为 0 和 1 的元素值,打印结果如下:
['红孩儿', '牛魔王', '猪八戒', '唐僧', '蜘蛛精', '白骨精']
四、列表的方法
末尾添加 (append)
通过 append()
方法在列表的末尾添加一个元素:
stus = ['孙悟空', '猪八戒', '沙和尚']
print('原列表:', stus)
stus.append('唐僧')
print('append后的列表:', stus)
这样,唐僧
这个元素就会被添加到 stus
这个列表的后面,打印结果如下:
原列表: ['孙悟空', '猪八戒', '沙和尚']
append后的列表: ['孙悟空', '猪八戒', '沙和尚', '唐僧']
插入元素(insert)
往列表中插入一个元素,通过 insert()
方法:
stus = ['孙悟空', '猪八戒', '沙和尚']
print('原列表:', stus)
stus.insert(1, '唐僧')
print('insert后的列表:', stus)
在 stus
列表索引值为 1 的位置,插入一个元素 唐僧
,打印结果如下:
原列表: ['孙悟空', '猪八戒', '沙和尚']
insert后的列表: ['孙悟空', '唐僧', '猪八戒', '沙和尚']
清除元素(clear)
清空列表中的所有元素:
stus = ['孙悟空', '猪八戒', '沙和尚']
stus.clear()
print(stus)
所有元素都被清空了,打印结果如下:
[]
根据索引删除元素(pop)
根据索引值,删除一个元素并返回被删除的元素值:
stus = ['孙悟空', '猪八戒', '沙和尚']
a = stus.pop(2)
print('删除的元素:', a)
print('删除后的列表:', stus)
这样,就删除了列表中索引值为 2 的元素。打印结果如下:
删除的元素: 沙和尚
删除后的列表: ['孙悟空', '猪八戒']
del()
也能实现类似的效果,但是没有返回值:
stus = ['孙悟空', '猪八戒', '沙和尚']
del(stus[2])
print('删除后的列表:', stus)
根据值删除元素(remove)
删除指定值的元素,如果有多个值相同,只删除靠前的一个:
stus = ['孙悟空', '猪八戒', '沙和尚', '孙悟空']
stus.remove('孙悟空')
print('删除后的列表:', stus)
上面,把第一个元素 孙悟空
给删除了,打印结果如下:
删除后的列表: ['猪八戒', '沙和尚', '孙悟空']
反转列表(revert)
将列表的元素位置反转:
stus = ['孙悟空', '猪八戒', '沙和尚']
stus.reverse()
print(stus)
元素的位置改变了,打印结果如下:
['沙和尚', '猪八戒', '孙悟空']
元素排列(sort)
通过 sort()
方法进行排列:
stus = ['a', 'c', 'b', 'f', 'g', 'm', 'i']
stus.sort()
print(stus)
上面,安装 ASCII 码表进行 升序排列,打印结果如下:
['a', 'b', 'c', 'f', 'g', 'i', 'm']
如果需要 ASCII 表 降序排列 ,打印结果如下:
stus = ['a', 'c', 'b', 'f', 'g', 'm', 'i']
stus.sort(reverse=True)
print(stus)
通过反转 reverse
参数,安装 ASCII 码表进行降序排列,打印结果如下:
['m', 'i', 'g', 'f', 'c', 'b', 'a']
遍历列表
可以使用循环语句来实现,比如使用 while
语句:
stus = [1, 2, 3]
i = 0
while i < len(stus):
print(stus[i])
i += 1
列表中的元素将被依次打印出来。更好 方法是用 for 语句:
stus = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for s in stus:
print(s)