02Python数据类型及类型间转换
1. 变量基本概念
(1) 概念:变量 来源于数学,是计算机语言中能储存计算结果或能表示值的一个抽象概念(可以理解为一个代号)。
(2) 命名规则:变量是一个典型的标识符,请参考标识符命名规则(大致就是由字母、下划线、数字组成,但不能以数字开头)
(3) 赋值运算:
① 支持同时为多个变量赋值
也可通过id(var)打印每个变量的内存地址
可看出a,b,c的内存地址相同,都为31913592,说明a,b,c占用相同的内存。
② 同时为多个对象指定多个变量
Id(a):打印a的内存地址;type(a):打印a的数据类型
2. 数据类型
2.1. 概述
(1) 变量中可以存放各种数据,在变量创建时会在内存中开辟一个空间,Python虚拟机会为不同数据类型的变量开辟不同的内存空间。
(2) Python的5个标准数据类型:
① Numbers(数字)
② String(字符串)
③ List(列表)
④ Tuple(元组)
⑤ Dictionary(字典)
2.2. 数字类型(Numbers)
(1) 当你改变数字类型对象的数值时,相当于重新创建了一个新的对象,在内存中分配了新的空间,如下实例给a重新赋值后,内存地址发生了改变如下实例:
执行结果可以看出,a重新赋值后,内存地址发生了改变:
(2) 删除变量a:del a
执行结果:错误表示a没有被定义,说明删除成功。
(3) 四种不同的数字类型
① int(有符号整型,通常被称为是整型或整数,是正或负整数,不带小数点)
② long(长整型[也可以代表八进制和十六进制],无限大小的整数,整数最后是一个大写或小写的L)
③ float(浮点型,由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250))
④ complex(复数,由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型)
2.3. 字符串类型
(1) 字符串截取子字符串:s[startIndex:endIndex] startIndex默认为0,endIndex默认为len(s),字符串的长度。截取时包括startIndex,不包括endIndex,例如s[0:7]:截取的是第一个到第七个元素,不包括第八个元素。
#-*- encoding: UTF-8 -*-
s = "welcome to python"
print s[0:7]
#输出结果为welcome,包含下边界,不包含上边界
(2) 连接字符串:“+”,这里多提一下,当连接字符串和数字类型时,使用”+”会报TypeError: cannot concatenate 'str' and 'int' objects错误,字符串类型和数字类型可通过“,”连接。如下:
#-*- encoding: UTF-8 -*-
s1 = "name:"
s2 = "梅 age:"
print s1+s2,20 #输出结果为 name:梅 age:
20
(3) 多倍(重复)输出字符串:“*”
#-*- encoding: UTF-8 -*-
s1 = "name;"
print s1*4 #输出结果为 name;name;name;name;
(4) 常见的字符串操作函数
① Count:用于统计字符串里某个字符出现的次数。
② Endwith:判断字符串是否以指定的字符或字符串结尾
③ find:查找字符串是否包含指定的子字符串,存在则返回其索引,不存在则返回-1.
④ Index:与find类似,但如果不包含指定字符串,则会报错。
⑤ replace:替换字符串,同时可指定替换次数,默认为全部替换。
⑥ split:指定分隔符对字符串进行分割,可指定分割的次数,默认通过空格进行分割
⑦ strip:去除头尾指定字符串,默认去除头尾空格。
2.4. 列表类型(List)
(1) 语法结构:列表名称对象 = [元素1,元素2,元素3, .......] (元素可以是字符、数字、字符串、甚至是列表)
内存结构如下:
(2) List[] 和list[:]的区别
(3) 列表List的基本操作
① 获取子列表(列表切割):list[头下标:尾下标]
② 列表连接“+”: list1+list2
③ 列表重复“*”:list *10,实例如下
##-*- encoding: UTF-8 -*-
list1 = [1,2,3]
list2 = [4,"May_mm"]
print list1 #输出完整列表: [1, 2, 3]
print list2[1] #输出list2的第二个元素
:May_mm
print list1[0:2]
#输出list1的索引为0,1的元素: [1, 2]
print list1[1:] #输出list1从索引1到最后的元素:
[2, 3]
print list1 + list2 #连接两个列表: [1, 2, 3, 4, 'May_mm']
print list1 *2 #将list1重复输出两次:[1, 2, 3, 1, 2, 3]
(4) 列表List怎么打印中文出来,如下实例
#-*- encoding: UTF-8 -*-
list = [1,2,"梅"]
print list
上面代码打印结果为:
解决方案:导入json模块,如下:
# -*- encoding: UTF-8 -*-
# 导入json模块
import json
list = [1,2,"梅"]
print json.dumps(list,encoding='UTF-8',ensure_ascii=False)
这样之后打印正确:
2.5. 元组类型(Tuple)
(1) 语法:元组对象名称 = (元素1,元素2,元素3.......),内存结构如下:
(2) 特点:不能二次赋值,相当于只读列表,什么意思呢,当给tuple的元素重新赋值时,会报错:TypeError: 'tuple' object does not support item assignment,如下实例:
#-*- encoding: UTF-8 -*-
tuple1 = (1,2,3,"May_mm")
tuple1[0] =2
#执行后会出错:TypeError: 'tuple' object does notsupport item assignment
(3) 元组基本操作
① 获取元组(元组切割):tuple[头下标:尾下标]
② 元组连接“+”: tuple1 + tuple2
③ 元组重复“*”:tuple1 *10重复10遍,实例如下:
#-*- encoding: UTF-8 -*-
tuple1 = (1,2,3,"May_mm")
tuple2 = (4,5)
print tuple1 #打印tuple1: (1, 2, 3, 'May_mm')
print tuple1[3] #打印tuple1的第4个元素:May_mm
print tuple1[0:2]
#打印tuple1索引0-1的元素:(1, 2)
print tuple1[1:] #打印tuple 第二个到最后的元素:
(2, 3, 'May_mm')
print tuple1 + tuple2 #连接tuple1和tuple2: (1, 2, 3, 'May_mm', 4, 5)
print tuple1 *2 #将tuple1重复输出两遍:(1, 2, 3, 'May_mm', 1, 2, 3, 'May_mm')
2.6. 字典类型(Dictionary)
(1) 语法:字典类型对象 = {}
字典类型对象 = {key1:value1,key2:value2,...}
(2) 特点:
① 字典中的内容是通过键来存取的,不是偏移存取
② 字典用“{}”来标识,是典型的Key-Value数据结构。一般是通过Key来访问Value值,所以Key相对的会被频繁访问,因此索引键Key被存放在Stack栈内存中,值Value被存放在Heap堆内存中,内存表现形式如下:
(3) 字典基础操作
① 字典对象名称[key]: 访问Key对应的值
② 字典对象名称.keys: 访问该字典的所有索引Key
③ 字典对象名称.values: 访问当前字典的所有Value值 ,实例(部分注释后为打印结果)如下:
#-*- encoding: UTF-8 -*-
dic = {} #创建一个空字典
dic[1] ="first" #向字典中添加元素
dic["name"] ="May_mm" #同上
dic["language"] ="python" #同上
print dic #打印字典结果为:{1: 'first', 'name': 'May_mm', 'language': 'python'}
print dic[1] #打印key为1所对应的值;
first
print dic.keys() #打印所有key:[1, 'name', 'language']
print dic.values() #打印所有值: ['first', 'May_mm', 'python']
2.7. 列表、元组、字典的异同点
(1) 共同点:
① 都可是使用” + ”、” * ”连接或者重复计算,
② 都可以使用对象名称[index] 取相应元素
③ 截取方式: 对象名称[startIndex:endIndex]
④ 下表都是从0开始算起,即第一个元素的下标为0,最后一个元素下标为len(var-1)
(2) 不同点:
① 列表可以赋值
② 元组不能进行赋值,只读
③ 字典通过 dic[key] = value 进行赋值
2.8. 数据类型转化
(1) 常见的转换函数如下(实例就不贴了,下去可以一个一个试,哪些可以相互转换哪些不可以试试就知道了,个人觉得没有必要死记):
int(x [,base]) |
将x转换为一个整数 |
long(x [,base] ) |
将x转换为一个长整数 |
float(x) |
将x转换到一个浮点数 |
str(x) |
将对象 x 转换为字符串 |
tuple(s) |
将序列 s 转换为一个元组 |
list(s) |
将序列 s 转换为一个列表 |
dict(d) |
创建一个字典。d 必须是一个序列 (key,value)元组。 |
chr(x) |
将一个整数转换为一个字符 |
ord(x) |
将一个字符转换为它的整数值 |
说明一下:有关Python的文章为我对老师讲课内容的整理,且引用了很多课件中的截图,感谢老师。