python3的数据类型

注:前四种称为数字(Number)类型,包含:整数、布尔型、浮点数和复数。

一,int(整数)

整数没有长度限制,可以无限长。另外Python3中去掉了long类型。

number = 28509245094354309854093850243850285028028083028035802805238508  # 十进制
number = 0xA0F # 十六进制
number=0o37 # 八进制

整数运算时精确的.注意:不考虑计算机内存存不下的问题!!!
这里的精确指的是除法运算,因为加减乘一定是精确的,除法有除不尽的情况!!!
除法为什么精确呢?因为python中两个整数相除是以小数表示的,比如java整数相除还是整数.
但是这个精确要辩证的去理解,机器表示的浮点数肯定是有误差的,比如无限小数机器肯定表示不了.这里的精确指的是整数相除结果由原来的整数变成了浮点数,跟以往比显然是精确的!!!
python精确除法,示例如下:

>>> 10 / 3
3.3333333333333335

还有一种除法是//,称为地板除. 它也是精确的,为什么呢?因为运算符定义的就是取整,完全满足要求,就是精确的!!!

>>> 10 // 3
3

%求余运算,也是精确的, 运算符定义的就是求余数, 要小数位干什么? 完全满足要求!!!

>>> 10 % 3
1

二,bool(布尔值)

在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
(1)一个布尔值只有True、False两种值。
(2)布尔值可以用and、or和not运算。

>>> a = True
>>> isinstance(a, bool)
True
>>> isinstance(a, int)
True
>>> b = a + 1
>>> b
2

三,float(浮点数)

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

四,complex(复数)

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

五,String(字符串)

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
(1)用单引号或者双引号括起来任意文本.
(2)单引号中可以包含双引号,双引号中可以包含单引号

str1 = 'abc"d"efg'
str2 = "abc'd'efg"

(3)单引号中包含单引号,或者双引号中包含双引号,需要用到转义字符\

str1 = 'ab"c"d\'e\'fg'
str2 = "ab'c'd\"e\"fg"

(4)字符串中包含\也需要转义

str="abc\\defg"

(5)如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’‘表示’'内部的字符串默认不转义,但是和外面引号相同的字符必须转义

print(r'a\bc\d\efg')
print('ab\'c\'de\fg')#内部引号必须转义

(6)如果字符串内部有很多换行,用\n写在一行里不好阅读, 三引号可以保留换行格式

str = """abc
      defg"""

(7)字符串切片, 可用于截取(更多用法, 参考list切片操作)

>>> 'ABCDEFG'[:3] #从开头截取3个字符
'ABC'
>>> 'ABCDEFG'[1:5] #截取下标1到4的字符
'BCDE'
>>> 'ABCDEFG'[::2] #每隔两个元素取一个字符
'ACEG'

六,None(空值)

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

七, list(列表,功能类似链表)

(1)list是一种有序的集合,可以随时添加和删除其中的元素。

  • 初始化
l1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9']
  • 增加
l1.append('a3') #列表末尾追加
l1.insert(1, 'aa') #指定位置插入数据,原数据后移
  • 删除
l1.pop() #删除列表末尾数据
l1.pop(2) #删除指定位置数据
  • 修改
l1[0] = 'change'
  • 查询
l1[0]
l1[-1]   #查询列表最后一个元素
l1[-2]    #查询列表倒数第二个元素
  • 切片查询(Slice)
l1[1:3]   #从索引1开始取,直到索引3为止,但不包括索引3
l1[-2:-1]
l1[:3]  #前3个数
l1[-3:]  #后3个数
l1[:]    #取到所有列表,相当于复制
l1[0:7:2]  #从下标0取到下标7, 每2个数取一次
l1[::2]   #从所有数当中, 每两个取一个

(2)list中的数据可以不是一个类型

l1 = [10, 'a1', True]

八, tuple(元组)

(1)tuple和list非常类似,但是tuple一旦初始化就不能修改, tuple没有增加, 删除, 修改操作, 只能查询

  • 初始化
t1 = ()
t1 = (1, 2, 3)
t1 = (1, 'a1', True)
  • 查询
t1 = (1, 2, 3)
print(t1[1]) #注意取数据时和list一样都用中括号
  • 切片查询
使用方式和list一样, 参考list切片查询

(2)不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
(3)tuple只有一个元素时,需要加逗号
这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号表示计算,为了消除歧义,在只有1个元素的tuple定义时必须加一个逗号

t1 = (1) #此时定义的不是tuple和t1 = 1等价
print(t1)  #输出:1
t1 = (1, 2, 3)
print(t1) #输出:(1, 2, 3)
t1 = (1,) 
print(t1)  #输出:(1,)

九, dict(字典)

dict字典,在其他语言中也称为map

  • 初始化
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
  • 增加
d['Tom'] = 100
  • 删除
d.pop('Michael') #注意删除时是圆括号
  • 修改
d['Michael'] = 67
  • 查询
>>> d['Thomas'] #注意取数据时也用中括号,如果查询不到会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Thomas'
  • 要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in d
False
  • 二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
  • dict的key必须是不可变对象

这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

十, set(集合)

(1)set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
(2)要创建一个set,需要提供一个list作为输入集合:

  • 初始化
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
  • 增加
 s.add(4)
  • 删除
s.remove(4)
  • set中没有修改查询操作
  • 求交集
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
  • 求并集
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 | s2
{1, 2, 3, 4}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值