List(列表) 是 Python 中最通用的序列。列表是一个任意类型对象位置的相关有序集合,它没有固定大小。不像字符串,其大小是可以变的,通过对偏移量进行赋值以及其他各种列表的方法进行调用,可以修改列表大小。
列表中值的分割用变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认“0”开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。可以对列表进行索引、切片等操作,看下面例子。
# 通过 get_all_securities 函数我们可以获取所有股票信息,并转换成列表
L = get_all_securities('stock').index.tolist()
# 取前五只股票
L[:5]
别急上面的代码比较复杂,包含了pandas的知识,我们会在后面的课程中讲到,现在主要是为了获得一个股票代码列表。
# 定义列表L
L = ['000001.SZ', '000002.SZ', '000004.SZ', '000005.SZ', '000006.SZ']
# 使用len()函数查看列表的长度
len(L)
①列表索引:
print(L[0])
print(L[-1]) # 负数表示从后数第几个元素,-1即为列表的最后一个元素
②列表切片: (注意:切片并不会取到“尾下表”那个数)
L[1:5]
③ +操作可以拼接列表
L + [2,3,4]
list.append(x) 把一个元素添加到列表的结尾。
list.extend(L) 将一个给定列表中的所有元素都添加到另一个列表中。
list.insert(i, x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。
list.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.pop([i]) 从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从链表中被删除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,这个经常会在 Python 库参考手册中遇到这样的标记。)
list.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
list.count(x) 返回 x 在链表中出现的次数。
list.sort(cmp=None, key=None, reverse=False) 对列表中的元素进行排序(参数可以用来自定义排序方法,参考 sorted() 的更详细的解释)。
list.reverse() 就地倒排链表中的元素
del list[i] 有个方法可以从列表中按给定的索引而不是值来删除一个子项:del 语句。它不同于有返回值的 pop() 方法。语句 del 还可以从列表中删除切片或清空整个列表(我们以前介绍过一个方法是将空列表赋值给列表的切片)。
# 统计a中元素出现的次数
a = [3, 0, 0, 0, 3, 3]
print('a中 1 出现的次数:',a.count(1))
print('a中 3 出现的次数:',a.count(3))
print('a中 0 出现的次数:',a.count(0))
# 在a的尾部添加元素
a.append('同花顺')
a
# 将['mindgo','量化平台']于a进行拼接
a.extend(['mindgo','量化平台'])
a
# 在a中第三个位置插入-1
a.insert(2, -1)
a
# 返回 '同花顺' 在a中的位置
a.index('同花顺')
# 反向排列a
a.reverse()
a
# 对a进行排序,默认为升序!
a.sort()
a
程序出错了,因为列表中的数据有数字和字符!
# 取只有数字的部分
a = a[3:]
# 对a进行排序,默认为升序!
a.sort()
a
# 逆序排列a
a.sort(reverse=True)
a
# 删除列表a中值为 3 的第一个元素
a.remove(3)
a
# 删除a中索引为0的元素
del a[0]
a
# 删除a中索引为 2:4 的元素
del a[2:4]
a
del 也可以删除整个变量,此后再引用命名 a 会引发错误(直到另一个值赋给它为止)。我们在后面的内容中可以看到 del 的其它用法。
del a
a
列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈中。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
stack
stack.pop() #后进先出
stack
print(stack.pop())
print(stack.pop())
print(stack)
你也可以把列表当做队列使用,队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢(因为为了一个元素,要移动整个列表中的所有元素)。
要实现队列,使用 collections.deque,它为在首尾两端快速插入和删除而设计。例如:
from collections import deque
queue = deque(["同花顺", "mindgo", "量化平台"])
queue.append("python3")
queue.append("基础教学")
queue
print(queue.popleft()) # 先到的先出
print(queue.popleft())
print(queue)
这一节就学到这里就结束了。
下一节会向大家介绍数据类型的另一个重要成员——字典!