Python数据结构

1.列表

列表数据类型支持很多方法,列表对象的所有方法如下所示:

list.append(x) 在列表末尾添加一个元素,相对于a[len(a):] = [x]。

list.extend(iterable) 用可迭代对象的元素扩展列表。相对于a[len(a):] = iterable。

list.insert(i, x) 在指定位置插入元素。第一个参数是插入元素的索引,因此,a.insert(0, x)在列表开头插入元素,a.insert(len(a), x)等同于a.append(x)。

list.remove(x) 从列表中删除第一个值为x的元素。未找到指定元素时,触发ValueError异常。

list.pop([i]) 删除列表中指定位置的元素,并返回被删除的元素。未指定位置时,a.pop()删除并返回列表的最后一个元素。(方法签名中/两边的方括号表示该参数是可选的,不是要输输入方括号。这种表示法常见于python参考库)。

list.clear() 删除列表里面的所有元素,相当于del a[:]。

list.index(x[, start[, end]]) 返回列表中第一个值为x的元素的零基索引。未找到指定元素时,触发ValueError异常。可选参数start和end是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是start参数。

list.count(x) 返回列表中元素x出现的次数。

list.sort(*, key=None, reverse=False) 就地排序列表中的元素(要了解自定义排序参数,详见sorted())。

list.reverse() 翻转列表中的元素。

list.copy() 返回列表的浅拷贝。相对于a[:]。

列表方法示例:

>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
>>> fruits.count('apple')
2
>>> fruits.count('tangerine')
0
>>> fruits.index('banana')
3
>>> fruits.index('banana', 4) # Find next banana starting a position 4
6
>>> fruits.reverse()
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
>>> fruits.append('grape')
>>> fruits
['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
>>> fruits.sort()
>>> fruits
['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
>>> fruits.pop()
'pear'
>>> fruits.pop(1)
'apple'

insert、remove、sort等方法只修改列表,不输出返回值——返回的默认值为None。这是所有python可变数据结构的设计原则。

还有,不是所有的数据都可以排序或比较。例如,[None, 'hello', 10]就不可排序,因为整数不能与字符串对比,而None不能与其他类型对比。有些类型根本就没有定义顺序关系,例如3+4j < 4+5j这种对比操作就是无效的。

1.1用列表实现堆栈

使用列表方法实现堆栈非常容易,最后插入的最先取出(“后进先出”)。把元素添加到堆栈的顶端,是用append()。从堆栈顶部取出元素,使用pop(),不用指定索引。例如

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

1.2 用列表实现队列

列表也可以作用队列,最先加入的元素,最先取出(“先进先出”);然而,列表作为队列的效率很低。因为在列表末尾添加和删除元素非常快,但在列表开头插入或移除元素却很慢(因为所有的元素都必须移动一位)。

实现队列最好用collections.deque,可以快速从两端添加或删除元素,例如:

>>> from collections import deque
>>> queue = deque(['Eric', 'John', 'Michael'])
>>> queue.append('Terry')
>>> queue.append('Graham')
>>> queue.popleft()
'Eric'
>>> queue.popleft()
'John'
>>> queue
deque(['Michael', 'Terry', 'Graham'])

1.3 列表推导式

列表推导式创建列表的方式更简洁。常见的用法为,对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表;或用满足特定条件的元素创建子序列。

例如,创建平方值的列表:

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值