博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础数据类型
阅读量:2240 次
发布时间:2019-05-09

本文共 10695 字,大约阅读时间需要 35 分钟。

基础数据类型

目录

一、布尔型(bool)

二、数字(number)

1、整数型(int)

2、浮点数(float)

3、分数

4、复数

三、字符串(str)

1、字符串运算符

2、转义字符

3、多行字符串

4、索引与切片

5、字符串方法

6、函数

四、表达式与运算符

1、运算符

2、math计算科学库

五、列表(list)

1、索引和切片

2、列表的常用方法

3、列表的拼接和重复

4、成员资格

5、列表的浅复制和深复制

6、列表推导式

六、元组(tuple)

七、集合(set)

1、创建集合

2、基本操作

3、集合运算

八、字典(dictionary)

1、创建字典方法

2、索引与修改

3、删除

4、新增

5、内置函数与方法

一、布尔型

和布尔代数的表示完全⼀致,⼀个布尔值只有True、False两种值,要么是True,要么是False。

二、数字

1、整数(int)

Python可以处理任意⼤⼩的整数,当然包括负整数,在程序中的表示⽅法和数学上的写法⼀模⼀样,例

如:1,100,-8080,0,等等。

2、浮点数(float)

Python可以处理任意⼤⼩的整数,当然包括负整数,在程序中的表示⽅法和数学上的写法⼀模⼀样,例

如:1,100,-8080,0,等等。

关于小数不精准的问题

Python默认的是17位 精度,但是这个精度越往后是越不准的,

整数和浮点数在计算机内部存储的⽅式是不同的,整数运算结果永远是精确的,⽽浮点数运算则可能会有精度上的误差。
浮点数存在上界和下界,超过结果导致溢出。
由于存储有限,计算机不能精确显示⽆限⼩数,会产⽣误差。另外计算机内部采⽤⼆进制,不是所有的⼗进制实数都可以⽤⼆进制数精确表示。

3.1415926535897932# 输出 3.141592653589793

3、分数

在Python中,不⽌有浮点数(float),⽽且还有分数(Fraction)这个类型。

要使⽤分数,必须引⼊⼀个模块:

import fractions

然后就可以声明一个分数了

x = fractions.Fractions(1,2)

这样就声明了⼀个⼆分之⼀的分数,打印这个变量则会得出:1/2

需要注意的是,Python会⾃动进⾏约分:

import fractionsx = fractions.Fraction(0.2)y = fractions.Fraction(2/10)x == y结果为True

4、复数

复数对象有两个属性real和imag⽤于查看实部和虚部。

语法:real + imagj
虚数不能单独存在,它们总是和⼀个值为0.0的实数部分⼀起构成⼀个复数
实数部分和虚数部分都是浮点数
虚数部分必须有 j 或 J

num.real # 返回该复数的实数部分num.imag # 返回该复数的虚数部分num.conjugat() # 返回该复数的共轭复数

complex() 函数

complex() 函数⽤于创建⼀个复数或者将⼀个数或字符串转换为复数形式,其返回值为⼀个复数。该函

数的语法为:

complex(1,2)# 输出 (1+2j)

注意:如果第⼀个参数为字符串,第⼆个参数必须省略;若第⼀个参数为其他类型,则第⼆个参数可以选择。第⼀个参数为字符串,如果仍添加第⼆个参数时会报错。

三、字符串

字符串是字符组成的序列。可以⽤单引号、双引号和三引号。

单引号和双引号⽤法没有区别。
三引号允许⼀个字符串跨多⾏,其中可以包含换⾏符、制表符以及其他特殊字符。
如果字符串中出现转义符,可以⽤r或R来定义原始字符串,这样可以不让转义字符⽣效。

### 单引号、双引号和三引号name_1 = 'Evan'name_2 = "Evan"name_3 = '''Evan'''print(name_1,name_2,name_3)# 输出 'Evan','Evan','Evan'
#三引号s=r'''PythonCDAApple'''print(s)#输出 PythonCDAApple

1、字符串运算符

字符串连接:使⽤ + 相当于拼接两个字符串

'Hello' + 'Python' # HelloPython

重复输出字符:使⽤ *n 相当于把字符串重复n次

'cda' * 3 # cdacdacda

2、转义字符

\可以转义很多字符,⽐如\n表示换⾏,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\。

Python还允许⽤ r’ ’ 表示 ’ ’ 内部的字符串默认不转义。

### 字符串有转义符print(r'\t\n') # \t\nprint('\\t\\n') # 结果和上⾯⼀样,但是需要对\转义,也就是使⽤\\

3、多行字符串

如果字符串内部有很多换⾏,⽤\n写在⼀⾏⾥不好阅读,为了简化,Python允许⽤ ‘’’…’’‘的格式表示多⾏内容。同时也可以结合 r’ ’ 使⽤。

text = r'''My  #三引号Apple\/Pen'''in[18]:  textOut[19]:'My\\\nApple\\/\npen\\\n'in[20]:print(test)out[20]:My\Apple\/pen\

4、索引与切片

字符串也是⼀个可迭代对象,也就是说每⼀个字符串实际上都有⼀个对应的索引值。

a='abcdefgabc'a[3]out[51]:'d'a[1:4:1] # 切片规则左闭右开Out[54]:'bcd'

string[开始位置:终⽌位置:步⻓和⽅向]

注意:选区的区间属于左闭右开型,即从“起始”位开始,到“结束”位的前⼀位结束(不包含结束位
本身)。

str[0] # 获取第⼀个元素str[-2] # 获取倒数第⼆个元素str[1:3] # 获取从偏移为1的字符⼀直到偏移为3的字符串,不包括偏移为3的字符串str[1:] # 获取从偏移为1的字符⼀直到字符串的最后⼀个字符(包括最后⼀个字符)str[:3] # 获取从偏移为0的字符⼀直到偏移为3的字符串,不包括偏移为3的字符串str[:-1] # 获取从偏移为0的字符⼀直到最后⼀个字符(不包括最后⼀个字符串)str[:] # 获取字符串从开始到结尾的所有元素str[-3:-1] # 获取偏移为-3到偏移为-1的字符,不包括偏移为-1的字符str[-1:-3]和str[2:0] # 获取的为空字符,系统不提示错误str[::2] # 步⻓为2,⽅向从左到右str[-1:-5:-2] # 步⻓为2,⽅向从右往左

5、字符串方法

①find

检测 str 是否包含在mystr中,如果是则返回开始的索引值,否则返回-1

s_1='abcdefgabc's_1.find('d')Out[62]:3

②count

返回 str 在 start 和 end 之间在mystr⾥⾥⾯出现的次数

s_1='abcdefgabc's_1.count('b')Out[67]:2

③repalce

把mystr中的 str1 替换成 str2,如果count指定,则替换不超过count次

s_1='abcdefgabc's_1.replace('a','哈哈')Out[72]:'哈哈bcdefg哈哈bc's_1.replace('a','哈哈',1)print(s_1)out[77]:哈哈bcdefgabc

④split

以 str 为分隔符切⽚mystr,如果maxsplit有指定值,则仅分隔maxsplit个字符串

s_1.split('b')Out[76]:['哈哈', 'cdefga', 'c']  #以b为分隔符,且不显示b

⑤partition

按照⾏分隔,返回⼀个包含各⾏作为元素的列表

s_1.partition('b')Out[77]:('哈哈', 'b', 'cdefgabc')

⑥upper

转换 mystr 中的⼩写字⺟为⼤写

s_2=['abc']s_2.upper()out[28]:'ABC'

⑦lower

转换mystr中所有⼤写字符为⼩写

s_2.lower()Out[29]:'abc'

⑧title

将字符串中所有字符的首字母转换成大写

s_3='a,b,c'In [96]:s_3.title()Out[96]:'A,B,C'

⑨capitalize

将所有字符串中的第一个字符串转换成大写

in[97]:s_3.capitalize()Out[97]:'A,b,c'

⑩swapcase

将大小写互换

⑪strip

删除mystr字符串两端的指定字符,如果不指定默认是空格

b = ' goo gle 'b.strip()out:'goo gle'c='*google*'c.strip('*')Out[91]:'google'

⑫join

mystr中每个字符后⾯插⼊str,构造出⼀个新的字符串

x='我你'In [93]:'喜欢'.join(x)Out[93]:'我喜欢你
#判断字符串内的元素类型isalpha:如果mystr所有字符都是字⺟,则返回True,否则返回Falsemystr.isalpha()isdigit:如果mystr只包含数字,则返回True,否则返回Falsemystr.isdigit()isalnum:如果mystr所有字符都是字⺟或数字,则返回True,否则返回Falsemystr.isalnum()isspace:如果mystr中只包含空格,则返回True,否则返回Falsemystr.isspace()islower:如果mystr中的字⺟全是⼩写,则返回True,否则返回Falsemystr.islower()isupper:如果mystr中的字⺟全是⼤写,则返回True,否则返回Falsemystr.isupper()istitle:如果mystr中的⾸字⺟⼤写,则返回True,否则返回Falsemystr.istitle()
方法小结查1)检测字符串是否包含⼦串:index和find两者区别在于如果没有找到,find返回-1,index报错'abc123'.index('c1') # 2'abc123'.find('c1') # 2'abc123'.find('c2') # -1'abc123'.index('c2') # 出错2)统计⼦串出现次数:count'abc123abc'.count('b') # 2增1)⽤分隔符拼接字符串:join'1234'.join('abcd') # a1234b1234c1234d2)连接字符串:使⽤运算符 +3)复制字符串:使⽤运算符 *删1)mystr.strip(|指定字符|) 删除字删1)mystr.strip(|指定字符|) 删除字符串两端的指定字符,如果不指定默认是空格'#abc##'.strip('#') # abc' abc '.strip() # abc另外,lstrip和rstrip,分别是删除左边空格和删除右边空格改1)转换⼩写:lower()'aBcD'.lower() # abcd2)转换⼤写:upper()'aBcD'.upper() # ABCD3)⾸字⺟⼤写,其他⼩写:capitalize()'aBcD'.capitalize() # Abcd4)交换⼤⼩写:swapcase()'aBcD'.swapcase() # AbCd分割split([分隔符]) 默认是空格,\t,\n分割'I love you'.split() # 返回3个元素的列表'a#b#c'.split('#') # 返回3个元素['a','b','c']的列表检测startswith(prefix[,start [,end]]) # 是否以prefix开头endswith(suffix[,start[,end]]) # 以suffix结尾isalnum() # 是否全是字⺟和数字,并⾄少有⼀个字符isalpha() # 是否全是字⺟,并⾄少有⼀个字符isdigit() # 是否全是数字,并⾄少有⼀个字符isspace() # 是否全是空⽩字符,并⾄少有⼀个字符islower() # str中的字符是否全是⼩写isupper() # str中的字符是否全是⼤写istitle() # str是否是⾸字⺟⼤写

6、函数

len(s) # 求字符串的⻓度max(s) # 求字符串的最⼤数min(s) # 求字符串的最⼩数

①字符串的格式化

⽅法⼀:format_string % obj

# 方法一print('%s的年龄是%d'%('小哥哥',20))# 输出  小哥哥的年龄是20

⽅法⼆:str.format( ) 普通形式

# 方法二'{0}的年龄是{1}'.format('小姐姐',18)Out[113]:'小姐姐的年龄是18'

⽅法三:str.format( ) 接受参数形式

'{name}的年龄{age}'.format(name='小姐姐',age=18)Out[116]:'小姐姐的年龄18'

②填充与对齐

填充常跟对⻬⼀起使⽤,^<>分别是居中、左对⻬、右对⻬,后⾯带宽度

:号后⾯带填充的字符,只能是⼀个字符,不指定的话默认是⽤空格填充

# 我想填⼀个占宽8个位置的,如果不⾜就⽤空格填充'{:^8}'.format('2333') # 居中'{:<8}'.format('2333') # 左对⻬'{:>8}'.format('2333') # 右对⻬

③精度与类型

'{:.2f}'.format(1.1234) # 保留后面几位小数Out[127]:'1.12'

④金额的千位分隔符

'{:,}'.format(100000000)Out[128]:'100,000,000'

四、表达式与运算符

1、表达式与运算符

运算符类型有算数运算符、关系运算符、赋值运算符、逻辑运算符和条件运算符。

按照运算需要的操作数⽬,可以分为⼀元,⼆元,三元运算符:
⼀元:就是只需要⼀个操作数。例:+,-
⼆元:需要两个操作数。⼤多数都是⼆元。
三元:需要三个操作数,条件运算是三元运算符。例:b if a else c

①算数运算符

算术运算符是⼀个⼆元运算符,主要包括:

在这里插入图片描述

②关系运算符

⽤于⽐较两个表达式的值,关系运算符包括:

在这里插入图片描述

③赋值运算符

在这里插入图片描述

序列赋值x,y,z = '1','2','3' # 实质:右边是元组的⼀种写法,x=1,y=2,c=3x,y,z = '123' # 等价于上⾯x,y,z = '1234' # 报错,参数太多x,y,z = '1','2','3','4' # 报错,参数太多

④逻辑运算符

对于逻辑 “与”,“或”,“⾮”,我们使⽤and,or,not这⼏个关键字。

关系运算可以通过逻辑运算符and和or组合,⽐较的结果可以⽤not来取反意。逻辑运算符的优先级⼜低

于关系运算符,在它们之中,not具有最⾼的优先级,or优先级最低,所以 A and not B or C 等于 (A
and (not B)) or C 。
在这里插入图片描述

举例5 and 4          # 40 and 4              # 0False or 3 or 0           # 32 > 1 and not 3 > 5 or 4   # True

⑤运算优先级

在这里插入图片描述

2、math科学计算库

math模块的内置常量:

math.pi # 3.141592653589793math.e # 2.718281828459045

Python内置的⼀些计算函数:

在这里插入图片描述
Python还提供科学计算等库,例如math,导⼊math库后,常⽤的函数有:
在这里插入图片描述

五、列表

列表是⼀种可变的数据类型

列表中的数据类型不限
列表中的多个值之间⽤逗号进⾏分割

# 列表中的内容可以是任意的数据类型list1 = [1234,'Hello',3.14,True,'abc']list3 = [1, 2, 3, 'Hello', [1, 2, 3, 4, 5] ] # ⼆维列表

1、索引和切片

L= [1,2,3,4,5,6]L[2:5]Out[154]:[3, 4, 5]# 二维索引L = [[1,2,3],[4,5,6]]L[0][2]Out[158]:3

更改列表中的值

list5 = ['零', '⼀', '⼆', '三', '四', '五', '六']# 将“⼀”改为“壹”list5[1] = "壹"# 将(⼆,三,四)改为(2,3,4)list5[2:5] = 2,3,4

2、列表的常用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:insert,remove或者sort这些修改列表的⽅法没有打印返回值-它们返回None。在Python中对所有

可变的数据类型这是统⼀的设计原则。

3、列表的拼接和重复

in[35]:[1,2,3]+[2,3,4] # 只能同类型拼接Out[35]:[1, 2, 3, 2, 3, 4]
in[36]:'123'*3       # 3只能是一个整数型标量,只能用乘法,其他算数运算不行Out[36]:'123123123'

4、成员资格

检查特定值是否包含在序列中,我们可使⽤运算符in。它检查是否满⾜指定的条件,并返回相应的值:

满⾜时返回True,不满⾜时返回False。

L = [1,2,3,4,5] # 查询某个元素是不是在当前序列中int[38]:2 in LOut[38]:True

5、列表的浅复制和深复制

①浅复制

a = [1,2,3]b = a.copy()b[1] = 4a# [1,2,3]

这类似于使⽤a[:]或list(a),它们也都复制a。

②深复制

L2 = [1,2,[3],4,5]L3 = copy.deepcopy(L2)L3[2][0] = 100L2Out[64]:[1, 2, [3], 4, 5]L3Out[65]:[1, 2, [100], 4, 5]

6、列表推导式

列表推导式即List Comprehensions,是Python内置的⾮常简单却强⼤的可以⽤来创建list的⽣成式。

in[1]:[i*2 for i in range(1,6)]Out[1]:[2, 4, 6, 8, 10]in[8]:[i if i%2==0 else i/2 for i in range(1,11)] # 当if语句是完整的时候,if语句要放在前面Out[8]:[0.5, 2, 1.5, 4, 2.5, 6, 3.5, 8, 4.5, 10]# 多变量的列表生成式[i+j for i in range(100,103) for j in range(1,3)]Out[11]:[101, 102, 102, 103, 103, 104]

####六、元组

元组与列表类似,元组也是序列,唯⼀的差别在于元组是不能修改的。

tuple([1,2,3]) # 元组中元素不可变,即增删改都不行,可索引,可计数Out[69]:(1, 2, 3)
t1 = ('a','b',['x','y'])    # 元组只能管第一层,其他就不能管t1[2][1]='Y't1Out[77]:('a', 'b', ['x', 'Y']) # 这样就可以更改列表中的元素

七、集合

1、创建集合

①符号创建

J = {
2,3,4,1,1,1,3,} # 无序不重复JOut[78]:{
1, 2, 3, 4}

②函数创建

方法1:⽤set+字符串创建

set2('abc')Out[79]:{
'a', 'b', 'c'}

方法2:⽤set+列表/元组创建

set3 = set(['a','b','c'])set4 = set(('a','b','c'))

创建空集合:

set5 = set(())set6 = set([])set7 = set({
})set8 = {
} # 这是字典创建的⽅式

Tips:如果创建不可修改集合⽤frozenset

2、基本操作

①增加

s = {
1,2,3,4,5}s.add(6) # 随机添加一个元素,如果元素已存在,则不进⾏任何操作sOut[89]:{
1, 2, 3, 4, 5, 6}
s.update('123')  # 可以添加元素,且参数可以是列表,元组,字典等sOut[98]:{
'1', 2, '2', 3, '3', 4, 5, 6}

②删除

s={
'1', 2, '2', 3, '3', 4, 5, 6}s.remove('1') # 删除集合不包含的元素时,会报错sOut[99]:{
2, '2', 3, '3', 4, 5, 6}
s.discard(9) # 删除集合中不包含的元素时,什么都不返回,也不报错sOut[90]:{
2, '2', 3, '3', 4, 5, 6}
s.pop() # 随机弹出2

3、集合运算

s1 = {
1,2,3,4}s2 = {
3,4,5,6}# 交集s1 & s2Out[107]:{
3, 4}# 并集s1 | s2Out[108]:{
1, 2, 3, 4, 5, 6}# 差集s1-s2Out[109]:{
1, 2}# 对称集s1 ^ s2Out[110]:{
1, 2, 5, 6}

在这里插入图片描述

八、字典

字典是另⼀种可变容器模型,且可存储任意类型的对象。

字典是包含⼀个索引的集合,称为键和值的集合。

同⼀个键不允许出现两次。如果同⼀个键被赋值两次, 后⼀个值会被记住,

同⼀个键不允许出现两次。如果同⼀个键被赋值两次, 后⼀个值会被记住,

1、创建字典方法

方法一:

字典的每个键值(key→value)对⽤冒号分割,每个对之间⽤逗号分割,整个字典包括在花括号{}中

其中键必须是唯⼀的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串、数字和元组

d = {
'a':'1111','b':'2222','c':'3333'}out[34]:d = {
'a':1111,'b':2222,'c':3333}

方法二:

d = dict([('a',1),('b',2)])dOut[124]:{
'a': 1, 'b': 2}

方法三:

d = dict(a=1,b=2)dOut[122]:{
'a': 1, 'b': 2}

2、索引与修改

d = dict(a=1,b=2)# 索引d['a']   # 直接索引键Out[125]:1# 修改d['a']=11dOut[128]:{
'a': 11, 'b': 2}#添加信息d['School'] = 'CDA数据分析研究院'

3、删除

字典能删除单⼀的元素也能清空,删除⼀个字典⽤del命令,如下所示:

d = {
'Name':'Evan','Age':20,'Class':'First'}del d['Name'] # 删除键'Name'd.clear() # 清空字典del d # 删除字典print('Age:',d['Age'])

4、新增

d = dict(a=2,b=3)d['c']=4 #新增dOut[132]:{
'a': 2, 'b': 3, 'c': 4}

5、内置函数与方法

len(d)  # 计算字典元素个数str(d)  # 输出字典,以可打印的字符串表示d.keys() #返回包含该字典键的列表:d.values() #返回包含该字典值的列表d.items() #将键/值对看成⼀个元素,并返回列表:d.get('key')  #如果key对象存在,则返回value,value默认是None。d.update(d1)  #新增加去重,将d1的元素放入d中d.setdefault('e')  # 当键e不存在时,会新增一个键,默认值是None,也可指定具体值

‘2222’,‘c’:‘3333’}

out[34]:

d = {‘a’:1111,‘b’:2222,‘c’:3333}

方法二:```pythond = dict([('a',1),('b',2)])dOut[124]:{'a': 1, 'b': 2}

方法三:

d = dict(a=1,b=2)dOut[122]:{
'a': 1, 'b': 2}

2、索引与修改

d = dict(a=1,b=2)# 索引d['a']   # 直接索引键Out[125]:1# 修改d['a']=11dOut[128]:{
'a': 11, 'b': 2}#添加信息d['School'] = 'CDA数据分析研究院'

3、删除

字典能删除单⼀的元素也能清空,删除⼀个字典⽤del命令,如下所示:

d = {
'Name':'Evan','Age':20,'Class':'First'}del d['Name'] # 删除键'Name'd.clear() # 清空字典del d # 删除字典print('Age:',d['Age'])

4、新增

d = dict(a=2,b=3)d['c']=4 #新增dOut[132]:{
'a': 2, 'b': 3, 'c': 4}

5、内置函数与方法

len(d)  # 计算字典元素个数str(d)  # 输出字典,以可打印的字符串表示d.keys() #返回包含该字典键的列表:d.values() #返回包含该字典值的列表d.items() #将键/值对看成⼀个元素,并返回列表:d.get('key')  #如果key对象存在,则返回value,value默认是None。d.update(d1)  #新增加去重,将d1的元素放入d中d.setdefault('e')  # 当键e不存在时,会新增一个键,默认值是None,也可指定具体值

转载地址:http://fxqbb.baihongyu.com/

你可能感兴趣的文章
在eclipse中创建和myeclipse一样的包结构
查看>>
Java中的IO流
查看>>
java中的关键字
查看>>
如果某个方法是静态的,它的行为就不具有多态性
查看>>
优化Hibernate所鼓励的7大措施
查看>>
Java 8系列之重新认识HashMap
查看>>
HashMap 、 ArrayList、String 重写了equals方法 而Object类(比如User)没有重写
查看>>
Servlet的生命周期
查看>>
Object中的getClass()返回的是当前运行的类
查看>>
加载驱动程序的方法
查看>>
深入理解java异常处理机制
查看>>
object类的基本方法
查看>>
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>