python 数据结构
2017-02-16 10:08
225 查看
# -*-coding:utf-8-*- # ----------------- # Data Structures # ----------------- import numpy as np ''' Lists ''' ''' list.append(x):添加元素x list.extend(L):添加list列表L list.insert(i,x):在i位置插入元素x list.remove(x):移除元素x list.pop():移除最后一个元素 list.index(x):查看元素x的位置索引 list.count(x):元素x的个数 list.sort(cmp=None, key=None, reverse=False): 排序操作 list.reverse():逆序 ''' a = [3, 435, 545, 3243, 23, 34] print a.count(23) a.sort() # 默认为从小到大 print a a.sort(reverse=True) # 此时为从大到小 print a a.append(67) # 添加一个元素67 print a b = [563, 43, 4] a.extend(b) # 添加另一个list列表 print a a.reverse() print a a.pop() print a print '----------------------------' ''' 将list作为stack来操作,'last-in,first-out' ''' stack = [3, 4, 5] stack.append(3) stack.append(9) print stack stack.pop() print stack print '-----------------------------' ''' 将list作为Queue来操作,'first-in,first-out' ''' from collections import deque # collections.deque 用于快速的从队列两端进行添加和删除操作 queue = deque(['eric', 'john', 'micheal']) queue.append('terry') queue.append('graham') # 右边进 print queue queue.popleft() # 移除最左边的元素,左边出,右边进 print queue queue.popleft() print queue print '------------------------------' ''' 函数工具:filter(),map(),reduce() ''' print '*****filter****' def f(x): return x % 3 == 0 or x % 5 == 0 a = filter(f, range(2, 25)) # filter(function, sequence): 获取符合函数条件的序列 print a print print '*****map*****' def g(x): return x * x * x b = map(g, range(1, 11)) # map(function, sequence):获取序列元素在函数下的取值 print b seq = range(8) def add(x, y): # add()有两个参数 return x + y c = map(add, seq, seq) print c print print '*****reduce*****' def add(x, y): return x + y d = reduce(add, range(1, 11)) # reduce(function, sequence):将函数应用到整个序列 print d print '---------------------' ''' 列表推导式 ''' squares = [] for x in range(10): squares.append(x ** 2) print squares square = [x ** 2 for x in range(10)] # 使用列表推导式更加简单,更加清晰的展示循环的结果 print square print '---------------------' s = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] print s c = [] for x in [1, 2, 3]: for y in [3, 1, 4]: if x != y: c.append((x, y)) print c print '---------------------' vec = [-4, -2, 0, 2, 4] v = [x * 2 for x in vec] print v e = [x for x in vec if x >= 0] print e c = [abs(x) for x in vec] print c d = [(x, x ** 2) for x in range(6)] print d vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] num = [num for elem in vec for num in elem] print num from math import pi p = [str(round(pi, i)) for i in range(1, 6)] print p print '---------------------' print ''' 嵌套列表推导式 ''' matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] m = [[row[i] for row in matrix] for i in range(4)] print m transposed = [] for i in range(4): transposed.append([row[i] for row in matrix]) print transposed transposed = [] for i in range(4): transposed_row = [] for row in matrix: transposed_row.append(row[i]) transposed.append(transposed_row) print transposed z = zip(*matrix) # zip()的用法 print z ''' del 用法 ''' print '---------del---------' a = [-1, 1, 66, 78, 34, 212, 3] del a[2] # 删除元素 print a del a[2:4] print a del a[:] print a ''' 元组和序列 注意:元组是不可变的,列表是可变的 ''' t = 12345, 54234, 'hello' print t[0] print t u = t, (1, 2, 3) # 元组是可以嵌套的,元组不能修改 print u empty = [] singleton = 'hello' print len(empty) # 空元组的长度为0 print len(singleton) ''' 集合Sets:集合中可以进行的操作包括:并集、交集、对称差等数学操作 集合的创建必须使用set() ''' basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] fruit = set(basket) print fruit print 'apple' in fruit # 判断元素是否在集合中,返回True or False a = set('abcdefg') b = set('dfhe') print a print b print a - b # 集合差集 print a | b # 集合交集 print a & b # 集合并集 print a ^ b # 集合异或 ''' 字典: ''' tel = {'jack': 4098, 'sape': 4139} tel['guide'] = 4127 print tel del tel['sape'] print tel tel['irv'] = 56326 key = tel.keys() print key d = dict([('sape', 4139), ('jack', 4098), ('guide', 4127)]) print d e = {x: x ** 2 for x in (2, 4, 6)} print e c = dict(sape=4139, jack=4098, guide=4127) print c print '------------------------' ''' 循环技巧 ''' for i, v in enumerate(['tic', 'tac', 'toe']): # 使用enumerate()方法 print i, v questions = ['name', 'quest', 'favorite color'] answer = ['lan', 'the', 'blue'] for q, a in zip(questions, answer): # 使用zip()方法 print q, a for i in reversed(xrange(1, 10, 2)): # 使用reversed()和xrange()方法 print i basket = ['apple', 'orange', 'pear', 'banana'] # 使用sorted()方法 for f in sorted(set(basket)): print f knights = {'gallahad': 'the pure', 'robin': 'the brave'} for k, v in knights.iteritems(): print k, v import math raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN')] filtered_data = [] for value in raw_data: if not math.isnan(value): filtered_data.append(value) print filtered_data ''' 其他条件: while, if in, not in, is, is not, A and not B or C,A and B and C '''
相关文章推荐
- python 数据结构
- Python 教程-- 数据结构
- Python中数据结构之字符串:每种语言必重点讲授的难点内容
- 【Python】 如何解析json数据结构
- Python中数据结构
- Python Tutorial第五章 数据结构
- Python 数据结构小结
- python--如何解析json数据结构
- python学习总结之数据结构
- python学习数据结构
- Python 2.7 Tutorial —— 数据结构
- python笔记之数据结构
- python 教程 第七章、 数据结构
- python 数据结构
- Python学习笔记(1)--数据结构
- Python中数据结构 列表 元组 字典 序列
- python_数据结构
- Python学习(七) -- 数据结构
- python 数据结构