Python数据结构

1)把链表当作堆栈使用

#append():添加到末尾
#pop():删除末尾元素
2)把链表当作队列使用

#要实现队列,使用 collections.deque,它为在首尾两端快速插入和删除而设计
from collections import deque
queue = deque(['Eric', 'John', 'Michael'])
queue.append('Terry')  #在末尾插入
queue.popleft() #左删
queue.pop() #右删

链表可以用索引、切割或者 append() 和 extend() 等方法改变

3)函数式编程工具

链表中,三个内置函数非常有用:filter()、map()、reduce()

filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型)。如果该 序列 (sequence)是一个 strunicode 或者 tuple,返回值必定是同一类型,否则,它总是 list

>>> def f(x): return x % 3 == 0 or x % 5 == 0
...
>>> filter(f, range(2, 25))
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24]
map(function, sequence)  为每一个元素依次调用  function(item)  并将返回值组成一个链表返回。( 可以传入多个序列,函数也必须要有对应数量的参数,执行时会依次用各序列上对应的元素来调用函数(如果某些序列比其它的短,就用  None  来代替)。如果把  None  做为一个函数传入,则直接返回参数做为替代。)

reduce(function, sequence) 返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数 function,(可以传入第三个参数作为初始值。)

4)列表解析/列表推导式

源自集合的概念。对序列中的每一项运行一个表达式来创建一个新列表。每次一个,从左至右。

编写在方括号中,并且有使用了同一个变量名的表达式和循环结构组成。

它创建了新的列表作为结果,但是能够在任何可迭代的对象上进行迭代。

它能在Python的任何序列类型中发挥作用。

在Python3.0中,列表、集合、字典 都可以用来解析和创建。

 

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以iffor语句为上下文的表达式运行完成之后产生。

 

嵌套的列表推导式是对for后面的内容进行求值。


5)元组

元组是 不可变的,通常包含不同种类的元素并通过分拆(参阅本节后面的内容)或索引访问(如果是 namedtuples,甚至可以通过属性)。列表是 可变的,它们的元素通常是相同的类型并通过迭代访问。

6)集合

注意:想要创建空集合,你必须使用 set() 而不是 {}

创建字典的方式:

1)>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
2)>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
3)>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
sorted()  函数,它不改动原序列,而是生成一个新的已排序的序列





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值