1、和C++、Java的区别:

  动态类型:不需要声明a的类型。

    a=34

    type(a)

    <type  ‘int’>

  一切皆对象:

    4

2、数字:

  自动转换类型:a=34

          A=3.14

         A=2**1000(2的1000次方)

         //——整除的意思

  Decimal:

    问题1:0.3*3=0.8999999999999

    解决办法1:print(0.3*3)

      输出0.9

    解决办法2:用decimal

      From decimal import Decimal as D

      D(‘0.3’)*D(3)

      输出:Decimal(‘0.9’)

    问题2:1/2**10000=0L

    原因:上边这么写会自动转换成整数,所以为0。

    错误改正:1.0/2**10000

    此时又超了范围,无法表示

    正确改正:D(1)/D(2**10000)

      输出:Decimal(‘5.0123727……E-3011’)

    decimal这么好的优点,可以计算许多。缺点是执行时间可能比较长。

    我们可以用python -s “python语句”的形式在控制页面中执行Python的单条语句。再加上-mtimeit可以统计1000或10000次里边计算最快的那次。

    例如:

    python -mtimeit -s “from decimal import Decimal as D”

    “D(‘1.2’)+D(‘3.4’)”与

    python -mtimeit -s “from decimal import Decimal as D”

    “1.2+3.4”的运行时间,发现Decimal 的运行时间比直接运行要慢很多。

常用库:

  Import math

  math.pi

  math.sqrt(80)

  math.log10(2**1000)

  math.pow((x,y)   求x的y次方

  math.factorial(x)   x的阶乘

  import random

  random.random()

  random.choice(1,2,3,4)  等概率的从中选一个

  random.randint(a,b)    a 到b的整数中的一个随机整数

  random.uniform(a,b)    a到b之间均匀分布的一个随机数

  Random.gaus(mu,lamda)   返回一个高斯分布的随机数

  使用help(math)可以返回所有的函数的用法。因为Python中一切皆对象,所以,写函数的时候要用点的形式调用(猜的)。

  random有什么用: 

    random.random()>0.8则中奖

  numpy 科学运算的库:产生数组或矩阵,正态分布的随机数矩阵运算,矩阵求逆

  scipy  科学计算的库,拟合,线性插值,样条插值 积分,微分,解非线性方程

3、字符串

  切片,索引

    s=”use python do something”

    s[1]   s中第二个字符

    s[-1]   s中最后一个字符

    s[1:3]   s中1-3的字符串

    s[1:6:2]    s中从1开始,到6结束,2是步长

    s[1:]     从1开始的到最终的所有字符

    s[:-1]    从开始到最后一个字符

    S[:]     表示所有

    split  把单词按照某种要求分隔开如split(‘ ’)会按照空格把单词分隔开

    join   和split区别,是把单词合并

    常用的方法集合

    “let us ”+s  把s加到let us后边

    s*2  两个s

    s.upper()   全部大写

    s.find(‘pa’)   找含有pa的字符

    s.replace(‘python’,’java’)      用java替换python

    print”%s like %s %”(‘we’,’python’)   用we和Python填到%s里边

    strip       是去掉两头的空格

  转义字符

    s=”C:\newpython”,print s,len(s)

    

解决方法: 

  r’   \n’前缀字符串,不考虑转义

  

  三个双引号”””,用在字符串中既有单引号又有双引号的情况。

Unicode u’ ‘

  可以显示各国语言,是一种编码方式,是一个字符集。如utf8是一种国际化的编码方式。如果只想支持国语:gb2312,建议大家都用utf8,会比较方便。

  

  

  写法 u’    ’

  

字符串-re模块

  import re

  Regular expression

  re.match(p,text)               从头开始找,其他地方不找,只返回一个

  re.search(p,text)               从开始找,其他地方也找,只返回一个

  re.findall(p,text)        返回多个,然后作为列表返回

  re.split(p,text)         分离

  re.sub(p,s,text)       替换

  实际步骤(提高性能):pattern=re.compile(p)

  result=pattern.match(text)

  正则表达式(太多了,需要好好记):

  举例

  

  

  

  

  

  

  ^是非,|是或,[^0-9]意思是不是数字,因为空格也不是数字,所以后边会跟了一串……

  贪婪模式*    +  尽可能匹配多

  非贪婪模式*?   +?    尽可能匹配的少

  

  

4、日期和时间

  datetime

    日期:datetime.date.today()

    日期和时间:datetime.datetime.now()

    1000天以后是哪一天 datetime.timedelta(day=1)

    打印格式:Isoformat(),strftime()

    

  time 

    datetime.time(12,11,30)   十二点十一分三十秒

    time.time()  实际时间,运行两次,然后求差

    time.clock()   cpu时间,运行两次,然后求差

    time.sleep()

5、列表

  类似于数组。

  >>> a=[1,2,3]

  >>> a_ref=a     a_ref是a的引用

  >>> a[2]=100

  >>> a

  [1, 2, 100]

  >>> a_ref

  [1, 2, 100]

  常用操作

       a_copy   a的拷贝

     a.append(300)  a的末尾加一个元素

     a.insert(1,50)   把50插到1这个位置上

     a.pop()    弹出来

     a.sort()   排序

     a.reverse()   反序

     del a[1]   删除1这个位置的元素

     嵌套,多个类型并存

      

      +与*

      

      

      a.count(1)对a中的1进行计数。

      列表属于变量,可以多次赋值;字符串是常量,不可以多次赋值

      

      

6、不可变列表——元组,用小括号()

  (a,b,c),不能修改

  常用操作:

    index

    count  对某个元素计数

    + *

    嵌套   可嵌套可变的list

    转换   tuple()   将一个list转换成元组

    

    转换完成元组的时候,引用某个元素还是要用[]完成,而不是()。

7、字典

  Key-Value

  dict={‘xiaoming’:90,’xiaohong’:80,’xiaomao’:60,’xiaoli’:54}  直接定义字典

  dict   每个字典都是一个对象,用它的构造函数生成一个字典

  zip  两个相同长度的列表生成一个字典,一个是key,一个是values

  

  常用操作

  keys,values

  get

  update    想里边加入

  del    删除

  clear   清空

  

  嵌套   关键字只能用不可变的类型,如数字,字母,元组等

  字典是散列表,没有顺序,适合插入查询操作,key不一定是字符串,但一定是个不可变的对象。字典是通过关键字访问元素,list使用index来访问元素。

  排序:

    方法1:[(k,dict[k])for k in sorted(eict.keys())]

    方法2:sorted(dict.iteritems(),key=lambda d:d[1],reverse=true)

   再谈引用和拷贝

    引用:字典直接用=,则是引用,拷贝需要专门的拷贝函数,这个与list不同。list的引用c=a,而赋值如d=a[:]

    

    

    

    浅拷贝:

      字典d.copy(),copy.copy(d)

      列表L[:]

    深拷贝:

      copy.deepcopy(d)

      如果只有一层的话,深拷贝和浅拷贝一样的,如果有多层,浅拷贝只拷贝一层。

8、文件

  f=open(path,’r’)返回对象为file-like object 还可以是内存、网络等,r是只读,w是只写,a是既可以读也可以写。

  f.read()   读出来一个字节或一个单位

  f.readline() 读出一行来,读到换行为止

  r.write() 写

  r.close()   关闭文件

  中文支持

    import codecs

    f=codecs.open(filename,mode,encoding)   encoding我们一般用的uft-8的模式

  文件操作

    import os

    os.path.exists(filename)  判断文件是否存在

     

    实际操作在IDLE中照样是乱码,如果在cmd中或者在IDLE中生成文件后再运行时不会乱码。

    shelve 库   (把书放到书架上)

      import shelve

      d=shelve.open(file)

      d[‘name’]=’heibanke’

      d.close()

      它只有一个函数open,是一个简单的数据存储方案,你可以用它来存储东西,可以当做一个字典。

      

      

      程序中‘d’并没有写进去,因为是d没有写回,你把[‘a’,’b’,’c’]存到x,当你再次读取s[‘x’]的时候,它又从源中读取了一个拷贝,解决办法是利用一个中间变量。

      

      

      注意的是,f如果没有关闭的话,将会赋值成空,关闭之后再赋值,结果与第一次的一样。

      pickle/cpickle  库  保存数据

      import cpickle

      f=open(file,mode)

      cpickle.dump(obj,f)

      obj=cpickle.load(f)

      

      其中:

         

      是一个元组。

python变量——黑板客老师课程学习的更多相关文章

  1. python类——黑板客老师课程学习

    1.基本语法 class class_name(base_class):  base_class是它继承的父类 class_var def methods(self,args): statements ...

  2. python爬虫——黑板客老师课程学习

    程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...

  3. python画图—黑板客老师课程学习

    1.介绍 把每个图都看作一个对象,图中的每一个部分也是对象.——所有的一切都是对象. 工具——ipython notebook 是python里边用的最多的2D&3D的会图库,开源免费库,使用 ...

  4. python计算机视觉——黑板客老师课程学习

    机器学习的一个应用方向,是如何让机器去理解图像.包括对图像里物体的识别,跟踪和测量. 能做什么——无人驾驶汽车.人脸识别.车牌识别手势识别(游戏方向) PIL静态的库 OpenCV 动态的库 impo ...

  5. 线性代数和numpy——黑板客老师课程学习

    一.代数是什么 代数->数的抽象表示->向量空间(线性空间) 线代->线性代数 关系: 向量空间之间和内部转换是通过线性变换. 实数——一维空间的点 复数——二维空间的点 如果两个向 ...

  6. python语句表达式——黑板客老师课程学习

    1.赋值 多重赋值: a,b=1,2 a,b=’beijing’,’sh’ a,b=’bj’ a,b=(1,2) a,b=[1,2] …… 2.输入输出 输入: raw_input()   原始输入 ...

  7. pyhton函数——黑板客老师课程学习

    1.基本语法 语法: def func_name (arguments)  定义 statements return x,y x,y=func_name(para)   调用 作用域: 可以给内置的函 ...

  8. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  9. Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...

随机推荐

  1. window.location 小结)

    其实在网上都能找到,我只是总结一下,方便自己查找使用 示例URL:http://b.a.com:88/index.php?name=kang&when=2011#first 属性     含义 ...

  2. Mysql外键约束设置使用方法

    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常 ...

  3. mactype支持qq浏览器

    win7上使用mactype之后qq浏览器网页显示的字体不清晰,颜色也比较浅.解决方法: 1. 再qq浏览器地址栏中输入:qqbrowser://flags 2.在设置中启用DirectWrite高清 ...

  4. Pycharm 使用配置

    配置一下Pycharm吧,不然用着头疼 常用设置: 1. pycharm默认是自动保存的,习惯自己按ctrl + s 的可以进行如下设置: 1). file -> Setting -> G ...

  5. Python error: ascii’/'utf-8′ codec can’t decode byte 0xb8 in position 50: ord

    字符串使用了费ascii编码的字符,也就是它代表的16进制的编码超过127. 解决这个问题可以使用下面的方法解决,其实就是设置默认的编码.python 2.x的默认编码是ascii,如果改为utf-8 ...

  6. selenium之xpath定位和input文本

    selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...

  7. JAVA单向/双向链表的实现

    一.JAVA单向链表的操作(增加节点.查找节点.删除节点) class Link { // 链表类 class Node { // 保存每一个节点,此处为了方便直接定义成内部类 private Str ...

  8. c#检测端口是否被占用

    当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 . 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被 ...

  9. [solr] - Facet

    Solr facet使用于分类统计,是最好的工具.下面例子使用facet将可模拟查询搜索出租房信息. 1.在schema.xml中的内容如下: <?xml version="1.0&q ...

  10. SQL 创建一个只读账户 .

    1.进入sqlserver management studio 2.选择安全性->登录名->右键新建登录名 3.在常规里输入用户名和密码 4.在"用户映射"里“映射到此 ...