worldsite / blog.sc

Blogging soul chat, stay cool. via: https://blog.sc
3 stars 0 forks source link

Python基本数据类型 #15

Open suhao opened 4 years ago

suhao commented 4 years ago

python中一切皆对象,内置的对象类型有:数字、字符串、列表、字典、元组、文件、集合、布尔型、None等;编程单元类型有函数、模块、类,与实现相关的类型有编译的代码堆栈跟踪,还有套接字对象等。

(学会使用help万能函数,来探索功能哦)

下面,我们先来学习下基本的数据类型,也是核心数据类型。Python的基本数据类型有interge、boolean、string(字符串也称为序列)、list、tuple、dict,可以分为可变(list/dict)和不可变两类(interge/string/tuple)。

变量之赋值一切皆为引用,动态类型但是却是固定类型,不可动态转换

$ str = "abc"         #动态类型 
$ str + 1             #固定类型, ERROR: 不可动态转换
$ print 1 == 1        #print, 条件语句

一、数字

包括整数、浮点数、复数、十进制数、有理分数、集合等。常支持加减乘除,双星号的乘方等。。。

import math
import random

二、字符串:英文双引号,字节串

用来记录文本信息,是python的一种序列。序列包含元素并从左到右或者其他的可定义明了的顺序,可以根据相对位置存取。严格意义上,字符串是单个字符的字符序列,其他的还包含列表、元组。

_首先讲下编码,在C++中有宽字节字符、窄字节字符、CP_ACP、CPUTF8等,文件还有各种格式,如果不遵循统一的规则,或者接入各种第三方模块却未有明确约束,会深陷泥潭不可自拔。

在python中,默认的文件编码是ascii的,默认文件中是不能输入中文的;但是我们可以在文件开始加入utf-8标识来解决。这在C++中是依赖系统的文件属性,太不程序员了。。。

UTF-8是unicode的一种标准的实现。

请动手google搜索下如下两个概念,以及其区别哦。。。 ASCII码 Unicode编码标准

2.1 序列的操作

python强制类型转换是失效的,如int("abc1222")是错误的

a = "中文"
#输出6,注意文件增加coding=utf-8也依旧输出6
print len(a)         

#输出2              
print len(u"中文");  
b = a.decode('utf-8')
print len(b)               

单引号,双引号,三引号: 三引号用于多行注释,单双引号可以用于嵌套引号

格式化%,format方法{偏移量占位},{name}

2.2 模式匹配

Python中进行模式匹配,需要导入re模块,包含了类似搜索、分割、替换等。

import re
match = re.match('hello[ \t]*(.*)[ \t]*world', 'Hello     Python world')
match.group(1)

三、列表

可存储任意类型对象,位置相关的,有序的集合,通过偏移来索引,支持嵌套,可变的类型。大小不固定,通过偏移量可以修改列表的大小。列表也是序列的一种,故支持各种序列操作。

**最为强大的是,列表没有固定类型的约束。由于python中存储的元素可以看作是指针,故而可以在C++中理解为各种对象的指针void***

3.1 列表的操作

a = [1,2,3]
print a[-1]

b = [[1,2,3],[4,5,6]]
print b

3.2 列表推导式之应用

["%s" % d for d in xrange(10)]
[(x,y) for x in range(2) for y in range(2)]
dict([(x,y) for x in range(2) for y in range(2)])

3.3 引用

b=a,则b为列表的同一个引用

3.4 del

四、元组和集合

4.1 元组

元组是一个有序的集合,通过偏移来取数据,属于不可变对象,不能原地修改无排序修改等操作

优点:保证数据安全,传递给一个不熟悉的方法或者数据接口时,可以保证方法和接口不会改变我们的数据,以免引发未知问题

a = (1,2,3)
a[1:3]
dir(a)
b = list(a)
b[0] = 5
type(b)
a = tuple(b)
print a

4.2 集合

集合没有顺序的概念,不能使用切片和索引操作

五、字典

字典是无序,不能通过偏移存取,只能通过键来存取。

5.1 字典的操作