2.数据类型

1.简介

在Python中所有的数据类型都是类,每一个变量或常量都是类的“实例”。没有基本数据类型的概念,整数、浮点和字符串都属于类型。
Python有6种标准数据类型:数字、字符串、列表、元组、集合和字典,列表、元组、集合和字典可以保存多项数据,他们每一个都是一种数据结构,这一节先介绍数字与字符串。

2.数字类型

2.1整数类型

Python3中的所有整数都表示为长整数,理论上无限长(这一点尤为方便
默认情况下一个整数值,例如16表示的十进制整数。
那么其他进制如

  • 二进制数:以 0b 或0B为前缀,注意0是阿拉伯数字,不要误认为是英文字母o。
  • 八进制数:以0o或0O为前缀,第一个字符是阿拉伯数字0,第二个字符是英文字母o或 O。
  • 和十六进制整数:以 0x或0X为前缀,注意0是阿拉伯数字。

2.2浮点类型

浮点类型主要用来储存小数数值,Python浮点类型为float,Python只支持双精度浮点类型,而且是与本机相关。
浮点类型可以使用小数表示,也可以使用数学计数法表示,数学计数法中会使用大写或小写的e表示10的指数,如3.36e2。

2.3.复数类型

复数在数学非常重要概念,无论是理论物理学,还是电气工程实践中都经常使用。但是很多计算机语言都不支持复数,而Python是支持复数的,这使得Python能够很好地用来进行科学计算。
Python中复数类型为complex,例如1+2j表示的是实部1,虚部2的复数


c=1+2j
d=6+5j
print(c+d)

2.4布尔类型

Python中布尔类型为bool,bool是int的子类,它只有两个值:True和False。

bool(0) #False
bool(2) #True
bool('') #False
bool(' ') #True 非空
bool([]) #False
bool({}) #False

注: 任何类型数据都可以通过bool()函数转换为布尔值,那些被认为“没有的”、“空的”值会转换为False,反之转换为True。如None(空对象)、False、0、0.0、0j(复数)、”(空字符串)、[](空列表)、()(空元组)和{}(空字典)这些数值会转换为False,否则是True。

3.数字类型相互转换

提示:type()函数可以返回传入数据的类型

3.1隐式类型转换

多个数字类型数据可以数学计算,由于参与进行数学计算的数值类型可能不同,此时会发生隐式类型转换。规则如下:
这里写图片描述

a=1+False #a=1
b=1.0+True
type(a) # <class 'float'>

布尔数值可以隐式转换为整数,布尔值True转换为整数1,布尔值False转换整数0。

3.2显式类型转换

  • int():int()函数可以将布尔、浮点和字符串转换为整数。布尔数值True使用int()函数返回1,False使用int()函数返回0;浮点数值使用int()函数会截掉小数部分,字符串稍等。
  • float():float()函数可以将布尔、整数和字符串转换为浮点。布尔数值True使用float()函数返回1.0,False使用float()函数返回0.0;整数值使用float()函数会加上小数部分(.0)。
  • bool()函数:前面已介绍
int(False) #0
int(5.6) #5
float(5) #5.0
float(True) #1.0

4.字符串类型

由字符组成的一串字符序列,称为“字符串”,字符串是有顺序的,从左到右,索引从0开始依次递增。Python中字符串类型是str。

4.1字符串表示方式

  • 普通字符串。采用单引号(’)或双引号(”)包裹起来的字符串(当然也可以使用熟悉的转义符’\’)。
s='sdfvsauyjdbvsuay' # s="sdfvsauyjdbvsuay"
print(s)
"""
对于字符串中的单引号(')和双引号(")也可以不要转义符,
在包含单引号的字符串中使用双引号包裹字符串;
在包含双引号的字符串中使用单引号包裹字符串。
"""
  • 原始字符串(raw string)。在普通字符串前加r,字符串中的特殊字符不需要转义,按照字符串的本来“面目”呈现。
s=r'\tt'
  • 长字符串。字符串中包含了换行缩进等排版字符,可以使用三重单引号(”’)或三重双引号(”“”)包裹起来,这就是长字符串,三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
s1='''
a\n   b
'''
print(s1)

# 输出
a
   b

[Finished in 0.3s]

注:在长字符串中如果包含特殊字符,也需要转义的

4.2字符串格式化

在实际的编程过程中,经常会遇到将其他类型变量与字符串拼接到一起,并进行格式化输出。例如计算的金额需要保留小数点后四为、数字需要右对齐等,这些都需要格式化。
在字符串格式化时可以使用字符串的format()方法,以及占位符,具体示例如下:

name = 'xugongming38'
age = 18
s = '{0}我的年龄为{1}'.format(name,age)
# s = '{1}我的年龄为{0}'.format(age,name)
# s = '{n}的年龄为{a}'.format(n=name,a=age)
print(s)

#输出
xugongming38我的年龄为18
[Finished in 0.3s]

字符串中可以有占位符({}表示的内容),配合format()方法使用,会将format()方法中的参数替换占位符内容。占位符可以用参数索引表示,也可以使用参数的名字表示占位符,n和a都是参数名字。
占位符中还可以有格式化控制符,对字符串的格式进行更加精准控制。不同的数据类型在进行格式化时需要不同的控制符(与c/c++大同小异了。。),如下

这里写图片描述

name = 'xugongming38'
age = 18
money = 12.88
s = '{0}的年龄为{1:05d},工资为{2:.1f}元每秒'.format(name,age,money)
print(s)

4.3字符串查找

在给定的字符串中查找子字符串是比较常见的操作。字符串类(str)中提供了find和rfind方法用于查找子字符串,返回值是查找子字符串所在的位置,没有找到返回-1(len(source)返回字符串长度,注意len是函数)。

  • str.find(sub[, start[, end]]):在索引start到end之间查找子字符串sub,如果找到返回最左端位置的索引,如果没有找到返回-1。start是开始索引,end是结束索引,这两个参数都可以省略,如果start省略说明查找从字符串头开始;如果end省略说明查找到字符串尾结束;如果全部省略就是查找全部字符串。
  • ·str.rfind(sub[, start[, end]]):与find方法类似,区别是如果找到返回最右端位置的索引。如果在查找的范围内只找到一处子字符串,那么这里find和rfind方法返回值相同的。
    注:在Python文档中[]表示可以省略部分,find和rfind方法参数[, start[, end]]表示start和end都可以省略
source = 'I am a Genius!'
index = source.find('a')
print(index)
index = source.rfind('a')
print(index)
index = source.find('am')
print(index)
index = source.rfind('am')
print(index)

#输出
2
5
2
2
[Finished in 0.3s]

注: 函数与方法的区别是方法是定义在类中的函数,在类的外部调用时需要通过类或对象调用,例如上述代码source.find()就是调用字符串对象source的find方法,find方法是在str类中定义的。而通常的函数不是类中定义的,也称为顶层函数,他们不属于任何一个类,调用时直接使用函数即可len(),就是调用len函数,只不过它的参数是字符串对象source。

4.4字符串与数字相互转换

在实际的编程过程中,经常会用到字符串与数字相互转换。

4.4.1字符串转换为数字

字符串转换为数字可以使用int()和float()实现,这两个函数实现数字类型之间的转换,事实上这两个函数也可以接收字符串参数,如果字符串能成功转换为数字,则返回数字,否则抛出错误。

print(int('012'))
print("..........")
print(int('1.0'))

# 输出
12
..........
Traceback (most recent call last):
  File "C:\Users\dell\Desktop\b.py", line 3, in <module>
    print(int('1.0'))
ValueError: invalid literal for int() with base 10: '1.0'
[Finished in 0.3s with exit code 1]

#默认情况下int()函数都将字符串参数当成是十进制数字进行转换
#所以int('AB')会失败。int()函数也可以指定基数(进制)

print(int('AB',16))
# 输出
171
[Finished in 0.3s]

{}
4.4.2数字转换为字符串

数字转换字符串有很多种方法,字符串格式化可以实现将数字转换为字符串。另外,Python中也字符串提供了类似于int()的str()函数。

print(str(3.14))
print(str(False))
print(str([1,2,3]))

# 输出
3.14
False
[1, 2, 3]
[Finished in 0.3s]


s = '{:10.1f}'.format(12.889)# 格式化前面提过
print(s) # 如果只有一个参数占位符索引可以省略。

#输出
      12.9
[Finished in 0.2s]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值