02Python数据类型及类型间转换

来源:互联网 发布:类似facebook的软件 编辑:程序博客网 时间:2024/05/18 17:25

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) Python5个标准数据类型:

① 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的文章为我对老师讲课内容的整理,且引用了很多课件中的截图,感谢老师。