`
美丽的小岛
  • 浏览: 297323 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Python鸟视<转>

 
阅读更多

(二)Python简介

  Python很自由,语法简单,函数库多,我最喜欢Python的就是它的缩进,哈哈,全都要靠缩进来解释。对于我这种只爱读清晰代码的人来说简直太棒了。

  先把一些需要注意的基础给列出来:

  1.'/'除号与c不同,单个'/'是浮点除,两个除号'//'才是整除,而且整除也适用于浮点数,比如3.5//2.2,结果是1.0。

  2.乘方的符号是**,两个乘号,太好玩了。

  3.Python直接就支持大整数运算,我还用C写过大整数的运算算法,好长的。

  4.输入用input,输出用print ,这两个东西都非常灵活,也很好玩。

  5.模块,有点类似于头文件,from math import sqrt,这样就可以直接用sqrt函数了。我记得我一哥们读中学的时候,做解方程的题,一个大题下有10个小题,老师要求每个题都写个"解:原式=",然后,那哥们直接就打个大括号,在括号外面写了个很大的"解:原式="。现在想想,真实有异曲同工之妙啊!这里的math就是那个"解:原式="。

  6.string可以用单引号括起来,也可以用双引号,没什么区别。当然不能单引号,双引号混用,会有syntax error,这是我试过的,我记得我学shell时也试过,哈哈,天性啊!前段时间用C写了个简易的shell,我只想到用宏替换来实现单引号和双引号的混用,但这样会有问题,比如python中' "happy every day" yes '就会出现混乱的情况。但我现在还没想到更好的办法。三个引号用于一个string分成多行来写。

(三)常用数据结构----list(列表)

  list是一种线性的结构,类似于C中的数组,但方法比数组更多。通过对list的一些方法的调用可以实现栈,队列等常见的线性数据结构,可见list是非常灵活的。以下是我总结的list的基础知识点以及一些值得注意的地方:

  1.list可以被修改,包括添加,删除,段添加,段删除等,方法很多,运用很灵活。至于具体的函数到处都可以查到,我就不赘述了。

  2.list中的元素,类型可以不一样。比如 list1=['neilhappy',123]。这一点就与c中的数组,c++中的容器有区别了,这两者在声明过后,容器中的数据类型都是相同的。

  3.list可以通过下标来访问。比如:list1=['a','b','c'],那么list1[0]='a'。还可以访问一段元素,比如list1[0:2],是一个半开半闭的区间,左闭右开,所以结果是['a','b']。还可以加一个参数表示递增的数目:list1[0:2:2],跟matlab很类似。还有一点令我很惊喜,list还可以用负数下标来访问。list1[-1]代表最后一个元素,即'c'。这下strlen,sizeof等函数都可以略微休息下了。

  4.string与list的区别。当然,string可以作为list的元素,更重要的是,string可以直接相连:"neil""happy"。但是list必须要有个+号:['neil']+['happy'],结果是['neil','happy']。这一点需要注意一下。

  5.list的乘法。这又是我很喜欢的一个特性。以往声明c的数组时:int a[100]={1,2,3,4,5,5,5,5,5,5},好几个5,数的眼花,这下好了,在python中:a=[1,2,3,4]+[5]*6。哇,世界清静了。

(四)常见数据结构----tuple(元组)

  tuple与list非常类似,但tuple就像一个被严重限制的list,不准动(被更改),不准变强大(有很多methods),声明方法是tuple1=(1,2,3)或者tuple1=1,2。访问方法与list类似,不再赘述。

(五)常见数据结构----dictionary(字典)

  dictionary,实际上就是一组mapping,一种散列的思想。需要注意的知识点:

  1.形式。dict1={'name':'neil'}。这里的'name'就是key,'neil'就是value。dictionary就是一些key-value键值对的集合。

  2.浅copy与deepcopy。与c++基本类似,浅copy就相当于copy指针,而deepcopy就是在copy指针的同时还要分配相应的内存空间。

  3.访问方法:dict1['name']的结果就是'neil'。注意,在dictionary中没有order的概念,所以就不能像list一样用数字下标去访问,得用key去访问。  

(六)三种数据结构的区别与联系

  python中的容器可以随意的互相包含,这三种数据结构也是如此。list,dictionary可以进行修改,而tuple,string都不能修改,但dictionary的key又必须是不可修改的,即tuple,string。想像一下如果字典的索引都在随意修改会发生什么?

  三种数据结构的声明一定要注意,括号不同,数据结构就不同。list:list1=['neil','happy'],这里是方括号。tuple:tuple1=('neil','happy'),这里是圆括号。dictionary:dict1={'name':'happy'},这里是大括号。这里很容易就写错,有可能会造成比较难找的bug.

(七)常见数据类型----string

  我记得Peter Weinberger说过:"所有的C程序都做同一件事,观察一个字符,然后啥也不干"。可见string的重要性。也跟上面一样,直接写出我的总结和需要注意的地方。

  1.string的访问方法与list,tuple基本一样,string也和tuple一样,不允许修改,但string的方法比tuple强大的多。函数太多,不一一叙述了。

  2.用%来进行string的格式化输出。其实与C也没什么太大的区别。

>>> str1="%s  %s every day"
>>> name=('neil','happy')
>>> print str1 % name
neil  happy every day

(八)基本语句

  没什么其他说的,直接写吧:

  1.print 1,2,3。这个很好玩,打印出1 2 3 。注意有空格。

  2.print a or b.这个语句就相当于if(a!=0){print a};else{print b};极尽简化,太美妙了。

  3.unpack机制:很美妙的机制,在我学C的时候我就想,能否一个函数返回多个值,哈哈,python帮我实现了。

>>> tuple1=(3,2,1)
>>> x,y,z=tuple1
>>> x,y,z
(3, 2, 1)

  4.缩进来断句,我觉得这是python的精华啊。

  5.控制语句:if,elif,else,for,while,break,continue,基本与shell类似,只是要多个冒号,少个括号,多了缩进。简单介绍一下就可以了。

if  statement1:
    print something1
elif statement2:
    print something2
else:
    print something3

  6.x is y.判断x,y是否为同一个对象。举个例子,一目了然。x==y判断x,y是否相等,但相等的两个对象不一定是同一个对象。

>>> x=[1,2,3]
>>> y=[1,2,3]
>>> x==y
True
>>> x is y
False

  7.x in y.判断x是否在y中。很简单,但很实用。

  8.循环中的else语句。当我们想判断一个序列中没有一个数时,用循环常常需要添加一个标志变量来做到,比如:

values=[1,2,3,4,5]
flag=1
for x in values:
        if x==6:
                flag=0
                break
if flag==1:
        print "No!"

  如果改成这样for中的else:

values=[1,2,3,4,5]
flag=1
for x in values:
        if x==6:
                flag=0
                break
else:   
        print "No!"

  我感觉很是奇妙。

  9.list中用for:

>>> [x*x*x for x in range(1,5)]
[1, 8, 27, 64]

(九)学习过程中的一些笔记和注意事项(英文来自《Beginning Python From Novice to Professional 2nd Edition》)

  最后是一些我学习中的笔记和注意事项,比较散,但我觉得比较有用。

  1.空值有多种表现形式:False,0,None,"",{},[],()。

  2.Remember the Python motto of learning: use the source (which basically means read all the code you can get your hands on) .多看源代码。

  3.Blocks are indicated through indentation, and only through indentation in python.

  4.缩进断句使得代码风格比较固定。

  5.Make sure your comments say significant things and don’t simply restate what is already obvious from the code.写注释,绝对不写废话,绝对不简单重复代码所表达的意思。

  6.any object can contain other objects

  7.If a function call returns a sequence, you can index it directly.

  8.要注意list的方法是否修改了list本身,是否具有返回值。这个只有多用才能有较深的印象。

  9.python的强类型与java,c等强类型的比较。python,str1=1,还可以str1="aaa"。但是在c中,int a=1.1会直接截断小数部分。

  10.

>>> 'ad  c    d'.translate(table,'c')
'cd      d'   注意这里删除'c'是先删除'c',然后再进行替换

  11.print u'ærnæringslære' 前面加个u是使用unicode编码

  12.在dictionaries 中,in操作符只能用于key而不能用于value.

  13.Checking for key membership in a dictionary is much more efficient than checking for membership in a list. The difference is greater the larger the data structures are. 但我不明白这是为什么

  14.在python中,交换两个数是如此的简单,x, y = y, x 而三个数的交换本质上还是要用两个数的交换去完成.

  15.变量都需要先赋值才能使用。这也是python强类型的一个标志?

(十)小结

 

http://blog.csdn.net/neilhappy/article/details/7766017

分享到:
评论

相关推荐

    Python中文手册

    最初的步骤 &lt;br&gt;&lt;br&gt;简介 &lt;br&gt;&lt;br&gt;使用带提示符的解释器 &lt;br&gt;&lt;br&gt;挑选一个编辑器 &lt;br&gt;&lt;br&gt;使用源文件 &lt;br&gt;&lt;br&gt; 输出 &lt;br&gt;&lt;br&gt; 它如何工作 &lt;br&gt;&lt;br&gt;可执行的Python程序 &lt;br&gt;&lt;br&gt;获取帮助 &lt;br&gt;&lt;br&gt;概括 &lt;br&gt;&lt;br&gt;4....

    Python连连看

    Python连连看是nautilium朋友为了练习Python与wxPython而编写的一个小游戏。...&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;安装步骤:&lt;br&gt;直接运行pyllk.py&lt;br&gt;&lt;br&gt; &lt;br&gt;测试环境:&lt;br&gt;Ubuntu Feisty&lt;br&gt;Windows XP&lt;br&gt;Windows Vista &lt;br&gt;

    Python 学习笔记

    书籍简介:&lt;br&gt;第1章 Python介绍&lt;br&gt;第2章 开发Python使用的工具&lt;br&gt;第3章 Python的常用模块&lt;br&gt;第4章 Tkinter编程&lt;br&gt;第5章 Python的扩展&lt;br&gt;&lt;br&gt;本电子书非本人制作,收集来自互联网,版权归原作者所有,电子书只做...

    <pycrypto>-<2.6.1>-<python3.6>-<x64>

    pycrypto为加密解密的python第三方库: 资源文件为pycrypto2.6.1版本,且已经过编译,可以完美适配python3.6版本,主要解决如下问题: 无需依赖Microsoft Visual Studio可以成功安装pycryto库至python3.6中,解决了windows...

    Python核心编程

    Chun (陈仲才) 著&lt;br&gt;&lt;br&gt;杨涛 王建桥 杨晓云 高文雅 等译&lt;br&gt;&lt;br&gt;《Python核心编程》&lt;br&gt;&lt;br&gt;原书名:Core Python Programming&lt;br&gt;&lt;br&gt;从书名:软件开发技术丛书&lt;br&gt;&lt;br&gt;Python是一种不复杂但很健全的编程语言。...

    python_xml 读写

    python 读写xml示例,包括创建节点,修改节点,删除节点等操作,xml如下 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;bookstore&gt; &lt;book category="cooking"&gt; &lt;title lang="en"&gt;Everyday Italian&lt;/...

    django资产管理系统

    运维自动化项目 减少人工干预,降低人员成本 - 资产管理 - 操作管理 CMDB - 运维自动化基础 - 资产管理 运行环境: python 2,7 依赖的包如下: beautifulsoup4 4.6.3 &lt;pip&gt; ...Pillow 2.5.1 &lt;pip&gt;

    <python>基于改进的Hausdorf距离的DBSCAN船舶航迹聚类

    &lt;python&gt;基于改进的Hausdorf距离的DBSCAN船舶航迹聚类

    python中常见错误及解决方法

    &gt;&gt;&gt; print a&lt;br&gt;Traceback (most recent call last):&lt;br&gt;File &lt;stdin&gt;, line 1, in &lt;module&gt;&lt;br&gt;NameError: name 'a' is not defined&lt;br&gt; 解决方案: 先要给a赋值。才能使用它。在实际编写代码过程中,报NameError...

    py2exe-0.6.4.win32-py2.4.exe

    "&lt;br&gt;&lt;br&gt;# setup.py&lt;br&gt;from distutils.core import setup&lt;br&gt;import py2exe&lt;br&gt;&lt;br&gt;setup(console= ["hello.py"])&lt;br&gt;&lt;br&gt;执行: python setup.py py2exe&lt;br&gt;&lt;br&gt;执行后会生成一个名为dist的文件夹,在里面可以...

    django博客系统

    主页: 展示最新文章 展示最热文章 展示评论最多文章 分类查看 个人博客: 个人博客主页 个人博客文章详细:赞,踩,评论 个人博客分类:标签、分类、时间 个人博客主题定制:后台修改 ...Pillow 2.5.1 &lt;pip&gt;

    内网扫描工具

    运行环境:python 2.6 +&lt;br&gt; &lt;br&gt; 参数说明&lt;br&gt; -h 必须输入的参数,支持ip(192.168.1.1),ip段(192.168.1),ip范围指定(192.168.1.1-192.168.1.254),ip列表文件(ip.ini),最多限制一次可扫描65535个IP。&lt;br&gt; -...

    Python基础教程详解(第五十四课)-真值表.doc

    NOT not False &lt;=&gt; True not True &lt;=&gt; False (not的结果与原值相反) OR True or False &lt;=&gt; True True or True &lt;=&gt; True False or True &lt;=&gt; True False or False &lt;=&gt; False (只要有一个值为True,or的结果就是...

    Python写的解Foxmail的.BOX文件小程序(源码+可执行文件)

    此脚本的功能是把Foxmail的.BOX文件(如in.BOX等)解开,一个邮件一个文件或目录。...&lt;br&gt;源码使用方法示例:执行"python cutfox.py *.BOX"。&lt;br&gt;可执行程序使用方法示例:执行“pyformat *.BOX”。

    Python 2.5

    还有一些有趣的比如说,象下面的一个比较处理,用C语言为: &lt;br/&gt;&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;if (2&lt;br/&gt;&lt;br/&gt;用Python可以表示为&lt;br/&gt;&lt;br/&gt;if (2 &lt;br/&gt;&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;什么是Zope? &lt;br/&gt;&lt;br/&gt; &lt;br/&gt;&lt;br/&gt;Zope是一个开放源代码...

    Python核心编程(中文第二版)

    这是我迄今遇到的最清楚最友好的阐释Python的书籍了,&lt;br&gt;并且它还将Python引入了更广阔的领域。它没有冒昧的大量引用其他经验,而是&lt;br&gt;谨慎、深入的探索了Python的一些重要主题。与许多入门读物不同,本书不会用...

    luaedge 收集的 Python 电子书 < 3 >

    NULL 博文链接:https://leomodo.iteye.com/blog/322602

    Unirest是一个轻量级的HTTP请求库,涵盖Java、PHP、Python、NET等多种语言.rar

    &lt;artifactId&gt;unirest-java&lt;/artifactId&gt; &lt;version&gt;1.4.9&lt;/version&gt; &lt;/dependency&gt; 1 2 3 4 5 底层是基于httpclient的,所以需要引入httpclient相关依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/g

    Perl To Python Migration

    All of these basics are treated with respect to people's existing understanding and skills in Perl programming and show how they can be leveraged in Python.&lt;br&gt;&lt;br&gt;The last section of the book ...

Global site tag (gtag.js) - Google Analytics