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)]

python学习之数据结构的更多相关文章

  1. python学习4—数据结构之列表、元组与字典

    python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...

  2. 从0开始的Python学习012数据结构&对象与类

    简介 数据结构是处理数据的结构,或者说,他们是用来存储一组相关数据的. 在Python中三种内建的数据结构--列表.元组和字典.学会了使用它们会使编程变得的简单. 列表 list是处理一组有序的数据结 ...

  3. Python学习笔记——数据结构和算法(一)

    1.解压序列赋值给多个变量 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data ...

  4. Python学习笔记——数据结构和算法(二)

    1.字典中一个键映射多个值 可以使用collections中的defaultdict来实现,defalultdict接受list或者set为参数 from collections import def ...

  5. Python学习 Part3:数据结构

    Python学习 Part3:数据结构 1. 深入列表: 所有的列表对象方法 list.append(x): 在列表的末尾添加一个元素 list.extend(L): 在列表的末尾添加一个指定列表的所 ...

  6. Python学习(四)数据结构(概要)

    Python 数据结构 本章介绍 Python 主要的 built-type(内建数据类型),包括如下: Numeric types          int float Text Sequence ...

  7. Python学习-第二天-字符串和常用数据结构

    Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...

  8. python学习5—一些关于基本数据结构的练习题

    python学习5—一些关于基本数据结构的练习题 # 1. use _ to connect entries in a list # if there are no numbers in list l ...

  9. python菜鸟教程学习:数据结构

    列表方法 list.append(x):把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]. list.extend(L):通过添加指定列表的所有元素来扩充列表,相当于 a[len( ...

随机推荐

  1. maven项目,去除jar包中的不想要的依赖关系

    解释:就是说项目中要用到某一个a.jar包,通过maven引入了之后,也自动的导入了该jar包所依赖的包,这里就会存在一个问题,如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有 ...

  2. Linux设备驱动程序加载/卸载方法 insmod和modprobe命令

    linux加载/卸载驱动有两种方法. 1.modprobe 注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname ...

  3. clipbrd剪切板查看器

    本文,我们来学习一下简单的概念,即,如何查看系统剪贴版里面有什么内容?   如果要想看.或者验证系统剪贴版里面都有什么内容,最为简单的方法就是通过"粘贴"的操作来验证!   但是, ...

  4. oracle 11g的卸载

    oracle 11g 的卸载主要有两种方式:一种是使用Oracle Universal Installer管理工具,该工具以向导模式进行,比较简单.这里主要讲解第二种卸载数据库的方式-----使用”d ...

  5. 汇编指令与Intrinsics指令的对应关系汇总

    汇编指令与Intrinsics指令的对应关系汇总 参考网址:https://software.intel.com/sites/landingpage/IntrinsicsGuide/ 1.赋值指令:m ...

  6. python标准库学习-ftplib

    源码: """An FTP client class and some helper functions. Based on RFC 959: File Transfer ...

  7. Elasticsearch6.4.3文档的映射

    已经把ElasticSearch的核心概念和关系数据库做了一个对比,索引(index)相当于数据库,类型(type)相当于数据表,映射(Mapping)相当于数据表的表结构.ElasticSearch ...

  8. Memcached replace 命令

    Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值). 如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED. 语法: replace ...

  9. NiceFish的ERROR in AppModule is not an NgModule问题

    大漠老师的angular2新手教程项目,nicefish刚开始下下来运行ng serve --prod --aot 是 出现ERROR in AppModule is not an NgModule ...

  10. SPOJ - VLATTICE

    链接 题意:三维平面,找从(0,0,0)看(n,n,n)能看到的点 题解:很明显就是求gcd(i,j,k)==1的(i,j,k)对数,改一下公式即可,记得要算平行坐标轴的三个平面,还有含0的三个坐标 ...