标准数据类型
python3中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
不可变数据(3个):Nnmber(数字)、String(字符串)、Tuple(元组)
可变数据(3个):List(列表)、Set(集合)、Dictionary(字典)
Number(数字)
支持int、float、bool、complex(复数)
内置的type()函数可以用来查询变量所指的对象类型
a,b,c,d=20,5.5,True,4+3j
ptint(type(a),type(b),type(c),type(d))
输出(class'int',class‘folat’,class‘bool’,class‘complex’)
此外还可以用isinstance
a=11
isinstance(a,int)
Ture
isinstance和type的区别在于:
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型
注意:在python2中是没有布尔型,它用数字0表示False,用1表示Ture。python3中把Ture和False定义成关键字,但它们的值还是1和0,它们可以和数字相加。
数值运算
5+4#加法 9 4.3-2#减法 2.3 3*7#乘法 21 2/4#除法,得到一个浮点数 0.5 2//4#除法,得到一个整数 0 17%3#取余 2 2**5#乘方 32
注意:
数值的除法包含两个运算符:/ 返回一个浮点数,//返回一个整数。
String(字符串)
python中字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠转义特殊字符。
字符串的截取语法格式如下:
变量[头下标:尾下标]
索引值以0为开始值,-1为从末尾的开始位置。
加号+是字符串的连接符,星号*表示复制当前字符串,与之结合的数字为复制的次数。
str='runoob' print(str) #输出字符串 print(str[0:-1]) #输出第一个到倒数第二个的所有字符 print(str[0]) #输入第一个字符 print(str[3:5]) #输出第四个字符到第五个字符 print(str[1:3]) #输出第二个字符到第三个字符 print(str[2:]) #输出第三个字符开始后的所有字符 print(str*2) #输出字符串两次,也可以写成print(2*str) print(str+"TEST") #连接字符串 输出结果: runoob runoo r oob un noob runoobrunoob runoobTEST
python使用反斜杠转义特殊字符,如果不想让反斜杠发生转义,可以在字符串前加一个 r ,表示原始字符串:
print('ru oob')
ru
oob
print(r'ru oob')
ru oob
注意:python没有单独的字符类型,一个字符就是长度为1的字符串
word='python' print(word[]0,word[5]) p n print(word[-1],word[-6]) n p
与c字符串不同的是,python字符串不能被改变。向一个索引位置赋值,比如word[0]='m'会导致错误。
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义
- 字符串可以用+运算符连接在一起,用*运算符重复
- 字符串有两种索引方式,从左往右以0开始,从右往左以-1开始
- python中的字符串不能改变
List(列表)
List(列表)是python中使用最频繁的数据类型。
列表是写在方括号[ ]之间、用逗号分隔开的元素列表。
可以被索引、截取,被截取后返回一个包含所需元素的新列表。
索引值以0开始,-1为末尾的开始位置。
list=['abcd',123,'runoob',2.30,70.2] list2=['runoob',456] print(list,list2) #输出两个列表 print(list[1:]) #输出第二个元素开始的所有元素 print(list[2:4]) #输出第三个元素到第四个元素 print(list[3:5]) #输出第四个元素到第五个元素 print(list2*2) #输出两次列表 print(list+list2) #连接两个列表 ['abcd',123,'runoob',2.30,70.2] ['runoob',456] [123,'runoob',2.30,70.2] ['runoob',2.30] [2.30,70.2] ['runoob',456,'runoob',456] ['abcd',123,'runoob',2.30,70.2,'runoob',456]
- List写在方括号之间,元素用逗号隔开
- 和字符串一样,list可以被索引和切片
- List可以使用+操作符进行拼接
- List中的元素是可以改变的
python列表截取可以接受第三个参数,参数作用是截取的步长,以下实例在索引1到索引4的位置并设置为步长为2(间隔一个位置)来截取字符串:
1:4表示h,e,c,步长2表示从h数两个位置,所以1:4:2=h,c
1:4:1=h,e,c
0:5:3=c,c
假设列表 list = [1,2,3,4],
# list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
# inputWords[-1::-1] 有三个参数
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到列表末尾
# 第三个参数为步长,-1 表示逆向
Tuple(元组)
元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号()里,元素之间也是逗号隔开。
tup=(1,2,3,4,5,6) print(tup[0]) 1 print(tup[1:5]) (2,3,4,5)
tuple的元素不可改变,但可包含可变的对象,比如list列表。
构造包含0个或1个元素的元组比较特殊,所以有些额外的语法规则:
tup=() #空元组 tup=(2,) #一个元素,需要在元素后添加逗号
steing、list、tuple都属于sequence(序列)。
注意:
- 与字符一样,元组的元素不能修改
- 元组也可被索引和切片,方法一样
- 注意构造包含0和1个元素的元组特殊语法规则
- 元组也可使用+进行拼接
Set(集合)
Set(集合)是由一个或数个形态各异的大小整体组成的,构成集合的事务或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集必须用set()而不是{ },因为{ }是用来创建空字典。
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'} print(sites) # 输出集合,重复的元素被自动去掉 # 成员测试 if 'Runoob' in sites : print('Runoob 在集合中') else : print('Runoob 不在集合中') # set可以进行集合运算 a = set('abracadabra') b = set('alacazam') print(a) print(a - b) # a 和 b 的差集 print(a | b) # a 和 b 的并集 print(a & b) # a 和 b 的交集 print(a ^ b) # a 和 b 中不同时存在的元素 输出结果: {'Zhihu', 'Baidu', 'Taobao', 'Runoob', 'Google', 'Facebook'} Runoob 在集合中 {'b', 'c', 'a', 'r', 'd'} {'r', 'b', 'd'} {'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'} {'c', 'a'} {'z', 'b', 'm', 'r', 'l', 'd'}
交集:两个集合都有的部分
差集:交集外的部分
并集:两组集合放在一起,且不重复
Dictionary(字典)
dictionary(字典)是python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用{ }标识,它是一个无序的键(key):值(value)的集合。
健(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
dict = {} dict['one'] = "1 学python" dict[2] = "2 学python" tinydict = {'name': 'runoob','code':1, 'site': 'runoob.com'} print (dict['one']) # 输出键为 'one' 的值 print (dict[2]) # 输出键为 2 的值 print (tinydict) # 输出完整的字典 print (tinydict.keys()) # 输出所有键 print (tinydict.values()) # 输出所有值 #输出结果 1 学python 2 学python {'name': 'runoob', 'code': 1, 'site': 'runoob.com'} dict_keys(['name', 'code', 'site']) dict_values(['runoob', 1, 'runoob.com'])
断断续续写了好几天,工作时间写这个真的是夹缝中生存,本来前天写好,忙工作忘提交了,记性越来越差。