Python学习总结(4)-数据结构
来源:互联网 发布:java手游服务器框架 编辑:程序博客网 时间:2024/06/04 18:37
列表
- 列表支持切片操作
- 详细的列表方法说明可参阅这里:深入列表
- 列表还可以作为栈和队列使用。但作为队列使用时在开头插入和弹出元素效率慢,可使用
collections.deque
map()、filter()、reduce()
map()
、filter()
、reduce()
函数的作用与JavaScript中类似。filter(function, sequence)
返回的序列由function(item)
结果为真的元素组成。结果始终是列表,除非序列是字符串或元组。map(function, sequence)
为每个元素调用function(item
函数并返回结果的列表。map
可以传入多个序列,传入的函数也必须有和序列数目相同的参数。执行时会以此用各序列上对应的元素来调用函数。
>>> seq = range(8)>>> def add(x, y): return x+y...>>> map(add, seq, seq)[0, 2, 4, 6, 8, 10, 12, 14]
reduce(function, sequence)
只返回一个值。- 它首先以序列的前两个元素调用函数,然后再以返回结果和下一个元素继续调用。
- 如果序列只有一个元素,将直接返回,如果序列为空,则引发异常
- 函数可以传入第三个参数作为初始值,此时如果序列为空则返回初始值。否则就以初始值和序列第一个元素调用函数,以此类推。
列表推导式
列表推导式由括号括起来,括号里面包含一个表达式,表达式后面跟着一个for
语句,后面还可以接零个或更多的for
或if
语句。结果是一个新的列表,由表达式依据其后面的for
和if
子句上下文计算而来的结果构成。例如
squares = []for x in range(10): squares.append(x**2)#相当于squares = [x**2 for x in range(10)]combs = []for x in [1,2,3]: for y in [3,1,4]: if x != y: combs.append((x, y))# 相当于[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
- 列推导式可以嵌套列推导式
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] [[row[i] for row in matrix] for i in range(4)] # output [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
元组
- 元组由逗号分割的若干值组成。
t = 12345, 54321, 'hello!' u = t, (1, 2, 3, 4, 5) empty = () singleton = 'hello',
- 元组是不可变的
集合
- 集合中的元素没有顺序且不会重复,类似于Java中的
Set
。 - 集合的基本用途有成员测试和消除重复的条目。
- 集合对象还支持并集、交集、差和对称差等数学运算。
- 集合使用花括号或
set([iterable])
创建。 - 集合也支持推导式。
>>> a = set('abracadabra')>>> b = set('alacazam')>>> a # unique letters in aset(['a', 'r', 'b', 'c', 'd'])>>> a - b # letters in a but not in bset(['r', 'd', 'b'])>>> a | b # letters in either a or bset(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])>>> a & b # letters in both a and bset(['a', 'c'])>>> a ^ b # letters in a or b but not bothset(['r', 'd', 'b', 'm', 'z', 'l'])
字典
- 字典类似于Java中的
Map
。 - 字典中的
key
可以是任意不可变类型。如果元祖只包含字符串、数字或元祖也可以用作key
。 - 字典也可使用推导式。
>>> tel = {'jack': 4098, 'sape': 4139}>>> tel['guido'] = 4127>>> tel{'sape': 4139, 'guido': 4127, 'jack': 4098}>>> tel['jack']4098>>> del tel['sape']>>> tel['irv'] = 4127>>> tel{'guido': 4127, 'irv': 4127, 'jack': 4098}>>> tel.keys()['guido', 'irv', 'jack']>>> 'guido' in telTrue>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
遍历
遍历索引和对应的值
for i, v in enumerate(['tic', 'tac', 'toe']): print i, v
同时遍历多个序列
questions = ['name', 'quest', 'favorite color']answers = ['lancelot', 'the holy grail', 'blue']for q, a in zip(questions, answers): print 'What is your {0}? It is {1}.'.format(q, a)
反向遍历序列
for i in reversed(xrange(1,10,2)): print i
排序顺序循环序列
sorted
返回一个新的排序的列表。
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']for f in sorted(set(basket)): print f
遍历字典的键和值
knights = {'gallahad': 'the pure', 'robin': 'the brave'}for k, v in knights.iteritems(): print k, v
0 0
- Python学习总结(4)-数据结构
- python学习总结之数据结构
- python数据结构-树总结
- python数据结构总结:字符串
- python数据结构总结:字典
- Python基本数据结构总结
- Python简明教程学习笔记4--数据结构
- python数据结构学习笔记-4-堆栈 队列
- python数据结构学习笔记-4-链表
- Python学习--数据结构
- python学习数据结构
- 学习python(二) 数据结构
- python学习笔记-数据结构
- 【数据结构】学习总结【开篇】
- 数据结构学习总结
- 【学习总结】数据结构-高精度
- 假期数据结构学习总结
- 数据结构学习总结
- 随笔-指针相关
- 23种设计模式
- html 与 java 交互实现数据库连接登陆并在html网页上发送消息
- 字典树模板
- JNI使用初级篇
- Python学习总结(4)-数据结构
- JUnit中Runner的使用
- Swift - 如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)
- Android两种播放声音的方式
- C# 连接 Oracle 的几种方式
- java程序里实现ssh, scp, sftp
- 追忆似水童年
- 在Java中如何遍历Map对象
- 每个人应该知道的NVelocity用法