Python:入门笔记之list slices算法、匿名表达式、CGI、数据类型及应用领域

今天有时间,加了个python遇到个问题,然后延伸出一系列问题,有关slice,step及仔细研究了下stride的计算方法,结果搞了2个小时左右,入门就是痛苦啊,闲话不多说了,直接上问题上代码:

<span style="font-size:18px;">>>> a="python"
>>> print(a[::-1])
nohtyp
>>>
>>> print(a[:-1])
pytho</span>

针对这个计算,我的理解是string后面跟的[]里面是index,表示对string中字符的索引。

比如[0:n]表示string的中第一个到第n-1个字符,是用0来表示第一个字符的位置。

如果不写开头或结尾,就默认从头开始,或直到最后。例如[:3]其实就是[0:3],就是[0],[1],[2]这三个;[3:]则代表第四个到最后一个。然后如果index中时负数,则表示从后往前算,倒着数。

  • 注意一点,前后索引都是从0开始计算。
<span style="font-size:18px;">a=[2,3,1]
print a[-1:-2:-1]</span>
  • slice 有关片的计算

临时届值b=[-1:-2] 实际计算值为[], 故,不存在此界值;

有关片的计算,之前一直很糊涂,一直以为是分步计算,有一个中间值,后来仔细查了查,才明白是没有中间值的,这其中有一个步长的概念

起点,终点,步长

Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, tuple等。它的  语法是...[left:right]或者...[left:right:stride]。

假定nums变量的值是[1, 3, 5, 7, 8, 13, 20],那么下面几个语句为真:

nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一个元素。

nums[:-3] == [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。

nums[1:5:2] == [3, 7] 从下标为1的元素切割到下标为5的元素但不包含下标为5的元素,且步长为2。

add=lambda x, y : x + y

  • Python匿名函数之lambda表达式

1. lambda表达式用于创建小型的匿名函数,此函数在创建时不需要使用def关键字。

2. lambda表达式可以带有任意数量的参数。

3. lambda表达式不能访问全局变量,只能访问自身参数

4. lambda表达式不能使用print语句输出结果。

lambda表达式只有一句,形式如下所示:

lambda [var1, [var2,...]]:expression

求和的lambda表达式如下所示:

sm = lambda var1, var2:var1 +var2

print sm(10, 20)

程序输出结果为:

30

  •     CGI 意思为 Common Gateway Interface,。一种基于浏览器的输入、在Web服务器上运行的程序方法。CGI脚本使你的浏览器与用户能交互.这个脚本通常象服务器和系统中其他程序如数据库的桥梁。

    可执行脚本。

下面是在百度百科里找的一些基础,有助于培养自己的技能知识,就贴出来了,没兴趣的可以不看。

  • Python数据类型:

Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):


类型

描述

例子
备注

str

一个由字符组成的不可更改的有串行。

‘Wikipedia‘

"Wikipedia"

"""Spanning

multiple

lines"""

在Python 3.x里,字符串由Unicode字符组成

bytes

一个由字节组成的不可更改的有串行。

b‘Some ASCII‘

b"Some ASCII"


list

可以包含多种类型的可改变的有串行

[4.0, ‘string‘, True]

tuple

可以包含多种类型的不可改变的有串行

(4.0, ‘string‘, True)

set, frozenset

与数学中集合的概念类似。无序的、每个元素唯一。

{4.0, ‘string‘, True}

frozenset([4.0, ‘string‘, True])


dict

一个可改变的由键值对组成的无串行。

{‘key1‘: 1.0, 3: False}

int

精度不限的整数

42

float

浮点数。精度与系统相关。

3.1415927

complex

复数

3+2.7j

bool

逻辑值。只有两个值:真、假

True

False

除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。

  • Python应用领域:
  1. 系统编程:提供APIApplication
    Programming Interface
    应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。
  2. 图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。
  3. 数学处理:NumPy扩展提供大量与许多标准数学库的接口。
  4. 文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
  5. 数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft
    SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。
  6. 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet
    BitTorrent. Google都在广泛地使用它。
  7. Web编程:应用的开发语言,支持最新的XML技术。
  8. 多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
  9. pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆memories
    off
    )风格的AVG游戏,故命名为PYMO。
  10. 黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。
  11. 用Python写简单爬虫。首先,要通过urllib2这个Module获得对应的HTML源码。
<span style="font-size:18px;">import urllib2

url='http://www。baidu。com/s?wd=cloga'

content=urllib2.urlopen(url).read()</span>

通过上面这三句就可以将URL的源码存在content变量中,其类型为字符型。接下来是要从这堆HTML源码中提取我们需要的内容。用Chrome查看一下对应的内容的代码(也可以用Firefox的Firebug)。可以看到url的信息存储在span标签中,要获取其中的信息可以用正则式。

PS:此文仅做记录交流,不做他用。

参考资料:http://baike.baidu.com/view/21087.htm





时间: 2024-10-25 13:57:42

Python:入门笔记之list slices算法、匿名表达式、CGI、数据类型及应用领域的相关文章

Python 入门笔记

#安装 1.进入Eclipse, Help->Install New Software,点击Add按钮:Name: PyDev(随意) Location: http://pydev.org/updates 2.选择PyDev下的PyDev for Eclipse,别的都不要选,否则依赖检查那关过不去.按步骤安装即可.重启Eclipse. 3.配置PyDev插件Window->Preference: PyDev->Interpreter - Python,New一个Python解释器,填上

Python自学笔记之函数式编程6——匿名函数

我们传入函数时,有时候不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.以map()函数为例,计算f(x) = x * x时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81] 通过对比可以看出,匿名函数lambda x: x * x实际上就是: def f

python学习笔记4-内置函数、匿名函数、json处理

print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真 print(bin(10))#十进制转二进制 print(bool('s'))#把一个对象转换成布尔类型 print(bytearray('abcde',encoding='utf-8'))#把字符串变成一个可修改的bytes print(callable('aa'))#判断传入的对象是否可调用 print(chr(10))#打印

python入门笔记

python 2.7 1.print 输出,打印,也可以用 print() 可以输出字符串,数字,变量,比较结果,运算结果.字符串要加英文引号. >>> print "hello world" hello world >>> print 'hello world' hello world >>> print 1 1 >>> print 1.23 1.23 >>> print 1<2 True

python 入门笔记 (模块)

一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件.每个文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名.模块可以由两个语句和一个重要的内置函数进行处理.import: 使客户端(导入者)以一个整体获取一个模块.from:容许客户端从一个模块文件中获取特定的变量名.reload:在不中止Python程序的情况下,提供了一个重新载入模块文件代码

python入门笔记1

一瓶汽水2元,2空瓶可换1汽水,4瓶盖可换1汽水,问10元能喝多少瓶汽水 1 def duihuan(pingzi,gaizi,qian,jiu): 2 pingzi = pingzi+(qian/2) 3 gaizi = gaizi+(qian/2) 4 jiu = jiu+qian/2 5 qian = qian%2 6 7 gaizi = gaizi+pingzi/2 8 jiu = jiu+pingzi/2 9 pingzi = pingzi%2+pingzi/2 10 11 pingz

python学习笔记-Day04-第二部分(lambda表达式)

lamdba表达式 注意: 1. 用于处理简单逻辑 lamdba表达式只是一个表达式,而不是一个代码块,仅能封装有限的逻辑,对于逻辑复杂的代码 还是推荐使用def 定义函数 来处理 2. 自动return lamdba表达式中无需使用return语句, 会自动返回结果, 例: def func(arg):    arg+1上下两段代码功能相同func = lambda arg : arg +1 对于多个参数的lamdba表达式,示例如下:func = lambda a,b: a+b func =

《Python入门》Linux 下 Python Web开发环境搭建笔记

之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个人经验,CentOS 6.5 下也适用. 关于Python的版本 进入Python的网站,鼠标移到导航条上的下载,我们会发现提供两下主版本的下载链接! 这两个之间存在什么差别呢? 个人理解,2.7.x的版本为更加稳定的版本,而3.x的版本则是比较前卫的版本,包含了很多新功能新特性之类的: 但如果想要

用python做网页抓取与解析入门笔记[zz]

(from http://chentingpc.me/article/?id=961) 事情的起因是,我做survey的时候搜到了这两本书:Computational Social Network Analysis和Computational Social Network,感觉都蛮不错的,想下载下来看看,但是点开网页发现这个只能分章节下载,晕,我可没时间一章一章下载,想起了迅雷的下载全部链接,试试看,果真可以把他们一网打尽,但是,sadly,迅雷下载的时候,文件名没办法跟章节名对应起来,晕,我可