欢迎大家来到IT世界,在知识的湖畔探索吧!
在内存中存储的数据可以有多种类型。Python 定义了一些标准类型,用于存储各种类型的数据。
数据类型分为:
- 可变
- 不可变两种。不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
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] 可以指定多个排序条件
- list.sort(key=lambda dict:(dict[“key”], dict[“key2”], …))
- list.sort(key=operator.itemgetter(“key1”, “key2”, …)) # import operator
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/33520.html