第八章 数据类型

第八章 数据类型Python定义了一些标准类型,用于存储各种类型的数据。不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

欢迎大家来到IT世界,在知识的湖畔探索吧!

在内存中存储的数据可以有多种类型。Python 定义了一些标准类型,用于存储各种类型的数据。

数据类型分为:

  1. 可变
  2. 不可变两种。不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

Python中的每种数据类型都有构造函数,构造函数名称就是类型名称,如:int()、float()等。构造函数也可用于类似于C++的强制类型转换。

一、numeric

[不可变]

数字数据类型用于存储数值。

A、int(有符号整型)

B、long(长整型[也可以代表八进制和十六进制]),Python使用 L/l 来显示长整型。

C、float(浮点型),Python将带小数点的数字都称为浮点数。

D、complex(复数),复数由实部和虚部构成,可以用 a + bj,或者 complex(a,b) 表示, 实部和虚部都是浮点型。

默认值:int() – 0,float() – 0.0,long() – 0,complex() – 0j

二、布尔

在Python中的布尔类型为 <type ‘bool’>,取值为 True 、False。

默认值 bool() – False。

认为空对象(整数0,浮点数0.0,空字符”)是False,所有非空对象是真。

三、str “xxx”或者’xxx’

[不可变][索引]

字符串是由数字、字母、下划线组成一系列字符。Python不支持单字符类型,只有字符串类型,单字符也在Python也是作为一个字符串使用。ord/chr在ASCII与字符之间进行转换。

默认值:str() – ”

python的字串列表有2种取值顺序:

A、从左到右索引默认0开始的,最大范围是字符串长度少1

B、从右到左索引默认-1开始的,最大范围是字符串开头

在Python中定义unicode字符串,需要在字符串之前增加u/U。使用type分别查看以下变量的类型

str1 = u”nihao” # <type, ‘unicode’>

str2 = “nihao” #<type, ‘str’>

计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节,举例如下。

字母 A 用ASCII编码是十进制的65,二进制的01000001;

字母 A 用Unicode编码,只需要在前面补0就可以,因此, A 的Unicode编码是00000000 01000001。

汉字已经超出了ASCII编码的范围。

python中字符串是不可修改对象。每次+=会创建一个新的字符串,性能较差,推荐使用 jion

print 使用对象的 __str__方法

  • 初始化

方式一:str() 构造函数,可以将非字符串值表示为字符串。

方式二:使用 ” 或者 “”

  • 其他对象转换为str

str():函数,将其他对象转换为可阅读的str形式,主要调用对象的__str__方法,使用其返回值。

  • 转义字符 – 见附录五

如果需要打印转子字符,则可以通过两种方式实现:\\n 或者 R’\n’、r’\n’

  • 格式字符串

Python提供了更精细的字符串显示控制方法,通过选项功能实现。有以下两种方式:

1、在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

print “fromat string” % (data1, data2, data3, …) # dataN 与format string 中的%$ 相匹配。%是分隔符

每个format string的格式如下:%[name][flags][width][.precision]code

print “My name is %s and weight is %d kg!” % (‘Zara’, 21)

2、str.format() – Python2.6开始加入

增强了字符串格式化的功能,基本语法是通过 {} 和 : 来代替以前的 %。format 函数可以接受不限个参数,位置可以不按顺序。

A、不设置指定位置,按默认顺序 “{} {}”.format(“1”, “2”) # 1 2

B、设置指定位置 “{1} {0} {1}”.format(“1”, “3”) # 3 1 3

C、设置参数

key=root

a、具体参数

“{name} = {value}”.fromat(name=”key”, value=”root”)

b、字典设置参数

info={“name”:”key”, “value”:”root”}

“{name} = {value}”.format(**info)

c、列表设置参数

info=[“key”, “root”]

“{0[0]} = {0[1]}”format(info) # 0是必须的

d、对象

class info(object):

def __init__():

self.name=”key”

self.value=”root”

“{0.name} = {0.value}”.format(info())

说明:粗体0表示的是format后跟的参数位置

  • 字符串拼接

1、+,可以使用Python的操作符重载功能,str内部实现了 __add__,直接将两个str拼接起来。

2、jion,连接字符串数组。”split”.jion(seq) # 将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串

“:”.jion(“12345”) # “1:2:3:4:5”

  • 三引号

三引号的语法是一对连续的单引号或者双引号, 允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。如果字符串跨越多行,行与行之间的回车也会被保留。

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

多用于处理HTML或者SQL语句中。

errHTML = “””

<HTML><HEAD><TITLE>

Friends CGI Demo</TITLE></HEAD>

<BODY><H3>ERROR</H3>

<B>%s</B><P>

<FORM><INPUT TYPE=button VALUE=Back

ONCLICK=”window.history.back()”></FORM>

</BODY></HTML>

“””

两个作用:

1、用作文档注释

2、初始化字符串变量,保留特殊字符

四、list []

[可变] [复合数据类型][有序][索引]

列表由一系列按特定顺序排列的元素组成的有序集合,其中元素与元素之间没有任何关系。

使用 [] 标识列表,元素与元素之间使用,分割。可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表。列表中的每个元素都分配一个数字表示元素的索引,元素的索引规则类似于str。

使用 [:]操作可以复制列表,列表中已经存在的元素指向同一对象,新加的元素不影响原有列表。

list1 = [1, 2, 3]

list2 = list1[:] # id(list1[0]) == idlist2([0])

# list2.append(4) 不影响 list1

  • 初始化

1、空列表 []

2、[str, int, list, long, ……]

3、list() 构造函数,list(range(begin, end)) 创建参数列表范围内的整数列表。

4、列表解析,使用紧凑的方式创建列表。

[expression for-clause [condition]] # [elem for elem in range(1,10) if elem % 2 == 0]

expression:对每个元素执行的操作,结果当作列表的元素。# elem

for-clause:for操作的一个列表 # for elem in range(1, 10)

condition:可选的附加条件,符合条件的元素会执行expression操作。 # if elem % 2 == 0

  • 增加

list.insert(index, elem),任意位置插入元素

list.append(emel),列表末尾添加元素

  • 访问元素

采用下标法,类似于 str ,可以使用正向从0开始,也可以采用反向从-1开始。

  • 删除元素

del list[index] 删除单个元素

list.pop(index) 删除并返回指定位置的元素

list.remove(elem) 删除首次出现的元素

五、tuple ()

[不可变][索引]

使用 () 标识元组,可以把元组理解成不可变的list。

  • 初始化

1、空元组 ()

2、(data, ),单元素元组,需要在元素后面添加逗号。这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号。所以,如果元组只有1个元素,就必须加一个逗号,防止被当作括号运算。此时表示圆括号正在成为元组创建的一部分。

3、(data, data1, data2, …) 或者 data, data1, data2, … 都可以创建元组

4、tuple(list) 通过列表构建元组

  • 删除元组

因为元组是不可变的,所以del不能删除其中的一个元素,但是可以使用del删除整个元组,类似于删除变量关联的操作一样。

六、dict {}

[可变][无序]

使用 {} 标识字典,由索引(key)和它对应的值value组成。字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中。

Python为了实现快速搜索,键没有按顺序排列,自动修改排列顺序。

  • 键:键必须不可变,任意Python不可变数据类型均可当作dict的键,不允许同一个键出现两次
  • 值:值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的。
  • 初始化

1、空字典:{}、dict()

2、初始化字典:{key:value, key:value, ……}

3、dict() 构造函数,借助zip运算符:dict(zip(list_k, list_v))

  • 新增、修改、访问元素

通过dict[key]的形式进行标题提到的操作。

  • 删除

dict.clear() 删除字典中的所有元素

del dict[key] 删除指定的key以及key对应的值

  • 方法

items()、keys()、values():返回列表形式

6copy()浅拷贝字典,如果值是可变的则会影响所有引用

七、set

[可变][唯一][无序]

为集合类型,是含有不重复元素的数据集。支持数据集合中的概念。set没有快捷创建的方式,其输出格式为 set([data, …])的形式。

  • 初始化

集合只能通过构造函数创建没有快捷方式。

1、空集合 set()

2、set(str/list) 通过str或者list创建集合。

  • 操作

1、元素操作(方法):add、remove、clear2、支持数学集合的操作,改操作通过集合的方法实现。

相关操作

1、分片

在分片规则里list、tuple、str(字符串)都可以称为序列,都可以按规则进行切片操作。

[begin:end:step]

[begin, end) 选取范围,左闭右开。begin默认值为0,end默认值为末尾

step 表示增长步长,默认为1。负数步长意味着向后进行,此时begin,end都是用默认值。

2、for

遍历元素,可以使用的数据结构有:str、list、tuple、dict、set

for elem in xxxx:

block

3、判空

A、可以直接将对象当作 if/while 等条件语句的 expression,来判断是否为空。支持的数据结构有:str、list、tuple、dict、set

if dict: # 如果不为空

pass

B、可以使用 len(o) 函数来判断集合的长度。

if len(dict): #如果不为空

pass

4、排序

list[dict] 可以指定多个排序条件

  1. list.sort(key=lambda dict:(dict[“key”], dict[“key2”], …))
  2. list.sort(key=operator.itemgetter(“key1”, “key2”, …)) # import operator

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/33520.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信