Python数据类型——数值和自符串

数据类型(在内存中存储的数据可以有多种类型,python中有五个标准的数据类型)

(1) Number——数值

(2) String——字符串

(3) List——列表

(4) Tuple——元组

(5) Dictionary——字典

以下分别讨论

数值(四种,为不可变类型)

1.整数Int:即整数。

2.浮点数float:即小数,注意,浮点数的计算是不精确的。(可以转成整数进行运算)

3.布尔型bool:只有两个值1和0,即真和假。用true和false来表示。

4.Complex:python里面也有复数,复数由实数部分和虚数部分两部分构成。只是虚部用小写j来表示。用a+bj或complex(a,b)表示,如:1+2j/complex(1,2)(复数很少用)。

数值类型计算

数值类型之间可以进行基本的加减乘除之外,还有整除(//),取余(%),幂运算(**)等运算符。

>>> 8%4 #取余
0
>>> 9/6 #除法
1.5
>>> 9//6 #整除
1
>>> 9**6 #幂运算
531441

在python中,bool型true和false分别等同于1和0,也可以直接进行运算。

字符串

字符:键盘上所有符号都可以称为字符。(abcdef~12345~&*%~等)

字符串:由数字,字母,下划线组成的一串字符,也就是把字符串在一起。它是编程语言中表示文本的数据类型。

字符串有三种定义方式,分别是:单引号,双引号和三引号,只有三引号支持换行(三个单引号或三个双引号即’’’a’’’或”””a”””)

>>> str_1='str 1'
>>> str_2="str 2"
>>> str_3='''str 3'''
>>> str_4='''str 4
支持换行,第一和第二个不支持换行'''

字符串的加和乘计算

字符串也可以进行加法和乘法的运算,但是其本质都是进行字符串的拼接。

加法运算(+):直接拼接,是字符串链接运算符

乘法运算(*):复制后拼接,是重复操作。

例如:

>>>str = 'hello python!'

>>>print(str+"python") #输出连接的字符串

>>>print(str*3)   #输出字符串三次

输出打印结果

>>>hello python!python
>>>hello python!hello python!hello python!

ps:以下两个表达式都没有错。只不过一个是数值相加,一个是字符串相加。

>>> 5+8
13
>>> '5'+'8'
'58'

可以利用type函数来区分。

>>> type(5)
<class 'int'>
>>> type('5')
<class 'str'>

字符串的拼接

就是将两个或两个以上的字符串合并成一个。

1. 加号拼接

很多语言都支持使用加号链接字符串,python也不例外,只需简单地将两个或两个以上的字符串相加就可以完成拼接。

字符串格式化

>>> '%6d'%123   #%d 格式化整数
'   123'
>>> '%09.2f'%357.268  #%f 格式化浮点数,0表示用0填充;.2表示只表示两位小数。
'000357.27'
>>> '%c'%97  #%c 格式化成ascii码
'a'
>>> '%o'%8  #%o 八进制数处
'10'
>>> '%x'%16  #%x 十六进制数处
'10'
>>> '%e'%1000  #%e 格式化输出科学计数法
'1.000000e+03'
>>> '%r'%'123'  #%r 对象原样输出
"'123'"

2. 利用字符串格式化来拼接字符串

l使用%操作符

lformat方法

l利用join方法来拼接

>>> s='i'
>>> t='love'
>>> r='you!'
>>> '%s %s %s'%(s,t,r)#利用字符串的格式化来拼接字符串
'i love you!'
>>> ''.join ([s,t,r])#利用join方法拼接,没加空格
'iloveyou!'
>>> ' '.join ([s,t,r])#加空格,改变单引号里的内容,可以规定文本格式
'i love you!'
>>> '{} {} {}'.format(s,t,r)#利用format方法拼接
'i love you!'

字符串的内置方法join,使用其参数是一个序列类型,例如数组或者元组等。

字符串的format方法

>>> '{a:.2f}'.format(a=12.333) #保留两位小数
'12.33'
>>> '{:.2%}'.format(0.35) #以百分号形式输出
'35.00%'
>>> '{0:x}'.format(20) #转换成十六进制
'14'
>>> '{b:0<10}'.format(a=12.3,b=13.35) #左对齐,填充数字为0
'13.3500000'
>>> '{a:*^10}'.format(a=12.3,b=13.35) #居中对齐
'***12.3***'
>>> '{{hello{}}}'.format('python') #转义大括号
'{hellopython}'

注意:字符串类型是不可变的,所以每一次应用加号连接字符串都会生成一个新的字符串,连接多个字符串时,会导致效率低下。因此,一般不建议在连接大量字符串时用加法连接,尤其在for循环中。format同样也是字符串格式化输出方法,并且功能更加强大实用,推荐使用,并且在3.5之后的版本增加了f-string的用法,基本用法和format方法类似。

字符串方法

除了字符串格式化,字符串还有很多方法(python中字符串对象提供了很多方法来操作字符串)

1.字符串的修改

字符串和列表不同,不能修改,通常称为字符串的不可变。

>>> str_a='pyhton'
>>> str_a[2]=V
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    str_a[2]=V
NameError: name 'V' is not defined #字符串不可直接修改

如果需要修改字符串,那么需要调用字符串内置的方法并且重复值。replace方法是字符串修改常用的方法,可替换原子符串中的字符但是不会修改原字符,只是会返回一个新的对象,字符串所有修改的方法都是这样,不会改变原字符串,会返回一个新的字符串。

>>> str_a='pathon'
>>> str_b=str_a.replace('a','y')
>>> str_b
'python'

常见的还有:upper,lower,capitalize,title,strip等常见的方法。

>>> str_a='this is pyhton'
>>> str_a.upper() #全部变大写
'THIS IS PYHTON'
>>> str_a
'this is pyhton'
>>> str_a=str_a.upper()
>>> str_a
'THIS IS PYHTON'
>>> str_a.lower() #全部变小写
'this is pyhton'
>>> str_a=str_a.lower()
>>> str_a
'this is pyhton'
>>> str_a.capitalize () #首字母大写
'This is pyhton'
>>> str_a.title() #单词首字母大写(标题形式)
'This Is Pyhton'
>>> str_a.strip() #去掉两边空格
'this is pyhton'

2.字符串的切割

可以对字符串进行切割,默认是以空格来作为分隔符,切割之后的元素会放在一个列表当中。

split还可以指定切割字符,或者分隔符。

还可以指定切割的次数,默认是-1,即不做限制。

通常切割之后,对每个字符串处理完成之后,我们会利用join拼接起来。

>>> str_a='this is python string!'
>>> str_a.split() #字符串的分割
['this', 'is', 'python', 'string!']
>>> str_a.split() #指定分割
['th', 's ', 's python str', 'ng!']
>>> str_a.split('i',2) #指定切割次数
['th', 's ', 's python string!']
>>> '*'.join(str_a.split('i',2))#再利用join拼接起来
'th*s *s python string!'

3.字符串的查找(字符串的find方法)

find和列表中的index类似,可以找到元素在字符串中的索引值,也可以指定其实的查找位置,如果找不到元素,不会报错,而是返回-1。

>>> str_a='this is python string'
>>> str_a.find('i') #不填写索引值默认查找第一个
2 #结果为索引值,索引值是从0开始
>>> str_a.find('i,10')
-1

4.字符串的转义

大家需要掌握的转义字符有:\n,\t,r。

常见的转义字符总结

>>> print('abc\nef') #\n,换行符
abc
ef
>>> print('abc\tef') #\t,制表符
abc  ef
>>> print('abc\bef') #\b,退格符
abcef
>>> print('abc\\ef') #\\,转义反斜杠
abc\ef
>>> print('abc\'ef') #\',转义单引号
abc'ef
>>> print('abc\0ef') #\0,空字符
abc
>>> print('abc\aef') #系统提示音
abcef
>>> print('abc\tef') #\t,补全当前字符串长度到8的整数倍
abc  ef
>>> print('abc\\tef') #转义反斜杠
abc\tef
>>>print(r'abc\tef') #r,取消反斜杠的转义功能
abc\tef
>>> str_a='''python #换行也可以用三引号替换
'''
>>> str_a
'python\n'

5.字符串的编码

字符串中自带了encode方法,可以将字符串编码成指定的编码。当然也可以转换回去,调用decode方法即可。

utf-8:全国通用的一种编码,包含全世界所有国家需要用到的字符。如果你的网站涉及多个国家的语言,建议使用utf-8。

gbk:指中国的文字编码,如果你的网站只涉及中文,建议使用gbk,因为utf-8占用的内存空间大。

>>>'知识'.encode(encoding='utf-8') #将‘知识’这两个汉字根据‘utf-8’编码转换成字符储存在内存中
b'\xe7\x9f\xa5\xe8\xaf\x86'  
>>> zhishi='知识'.encode(encoding='utf-8')
>>> zhishi
b'\xe7\x9f\xa5\xe8\xaf\x86'
>>>zhishi.decode('utf-8')
>>>'知识'
>>> '知识'.encode(encoding='gbk')
b'\xd6\xaa\xca\xb6'

6.字符串的判断

字符串内部提供了很多判断方法,可以快速判断字符串是否符合要求,利用这些内置方法,可以节省很多时间。

>>> 'asd'.isalpha() #判断是否全是字母
True
>>> '123'.isdigit() #判断是否全是数字
True
>>> 'ASD'.islower() #判断是否全是小写
False
>>> 'ASD'.isupper() #判断是否全是大写
True


举报
评论 0