python的数据很丰富,所以对于数据分析来讲, python是一种最合适的选择
下面讲述一下常见的数据结构,包括栈,队列,元组,字典,集合等,以及对这些数据结构进行操作
#堆栈,后进先出 a=[10,11,23,45,46]; a.append(1); print(a); a.pop(); print(a); #队列,先进先出 from collections import deque; queue = deque([1, 5, 4]); queue.append(6); queue.append(3); queue.popleft(); print(queue); squares=[]; for a in range(10): squares.append(a**2); print(squares); #浅拷贝 newsquares=squares.copy(); print(newsquares); #map循环执行 arra = list(map(lambda x: x**2, range(10))); print(arra); d=[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]; print(d); #等同于下面 m=[]; for i in range(10): for j in range(10): if(i!=j): m.append((i,j)); print(m); z=[x**2 for x in range(6)]; print(z); #得到[[1, 2, 8], [2, 3, 9], [3, 5, 0]] zoom=[[1,2,3],[2,3,5],[8,9,0]]; zo=[]; for o in range(3): zo.append([ row[o] for row in zoom]) print(zo); #如果用传统的循环,将会是下面这样 zooms=[[1,2,3],[2,3,5],[8,9,0]]; jms=[]; for o in range(3): zos=[]; for arra in zooms: zos.append(arra[o]); jms.append(zos); print(jms); #元组 t = 12345, 54321, 'hello!'; print(t);
集合的遍历
#集合型数据的遍历 basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}; print(basket); arr=[]; arr=[item for item in basket if item != 'apple']; print(arr); #set来将一个字符串创建一个分散的集合 a = set('abracadabra') print(a);
#字典的遍历
arra={"a":"xeeig","b":"fe34","age":34, "ddress":"shanghai"};
print(arra);
#如何获得字典的键集合
print(list(arra.keys()));
print(arra["a"]);
print(sorted(arra.keys()));
b=[('c',1),('m',2),('n',3)];
arr=dict(b);
print(arr);
#遍历字典
y={x:x**3 for x in range(4,12)};
print(y);
y1=dict(sanpge=23,ge=45);
print(y1);
#得到的是键和对应的值
for k,v in arra.items():
print(k,v);
#得到是索引值和键
for j,l in enumerate(arra):
print(j, l);
#同时遍历两个序列 zip方法
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 range(1, 10, 2):
print(i);
#反向排序
for w in reversed(range(1, 10, 2)):
print(w);
#反向排序
for w in sorted(range(1, 10, 2)):
print(w);
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'];
print(set(basket));
string3 = '', 'Trondheim', 'Hammer Dance';
print(string3);
补充:
a = [[1, 2], [3, 4], [5, 6]]
不使用任何循环,将上面的嵌套列表转换成单一列表(即组成元素不是列表)
输出结果应为: [1, 2, 3, 4, 5, 6]
>>> import itertools
>>> list(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6]
技巧1:字符串倒置
>>> a = "codementor"
>>> print "Reverse is",a[::-1]
倒置之后的结果是“rotnemedoc”。
技巧2:转置矩阵(transposing a matrix)(把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵)
>>> mat = [[1, 2, 3], [4, 5, 6]]
>>> zip(*mat)
[(1, 4), (2, 5), (3, 6)]