一、Python数据类型

变量所指向的值是有自己独特的数据类型的,这些数据类型可能代表不同的数据,在Python中,主要有以下几种数据类型:

整形(int)

在计算机中,整数的位数其实是有范围的,并没有我们想象的那样拥有无限的位数,而且,在不同的机器上整数的位数可能不同,例如:

32位系统:整数的位数就是32位,寻址范围为:-231 ~ 231-1 ,即-2147483648 ~ 2147483647

64位系统:整数的位数就是64位,寻址范围为:-263 ~ 263-1 ,即-9223372036854775808 ~

长整形(long)

在Python中,长整形整数并没有指定位数,也就是说,长整形整数可以无限大,但是由于机器本身的限制,往往并不能无限大,到一定范围也就不行了。注: python3已取消

浮点型(float)

上面两种数据类型都是整数,但在实际并不可能全是整数,还有小数啊,于是浮点型便应运而生,说白了浮点型就是小数,并且可以使用科学计数,在计算机中,科学计数的倍数10用e代替,如:5.21x105 就写成 5.21e9,也可以写成521e7

复数(complex)

上面三种数据类型组合起来是实数,其实科学计算中常常用到复数,在Python中,存在复数的数据类型,一般形式为:x+yj,式中x,y都是实数,例如:5+6j

布尔值(True、False)

布尔值就俩:真、假,Python中用True、False表示,一定要注意首字母大写,Python中是区分大小写的,一定要注意。

  1. In [77]: 5==6
  2. Out[77]: False
  3. In [78]: 3>2
  4. Out[78]: True
  5. In [79]: True == True
  6. Out[79]: True
  7. In [80]: True == False
  8. Out[80]: False

空值(None)

空值就一个:None,这个空值是很有趣的,None不可以理解为0,因为0不是空值,就好像温度是0摄氏度一样,0摄氏度是有温度的( ̄▽ ̄)"

字符串(str)

字符串可能是编写Python中用到的最多的数据类型,只要是用引号引起来的就是字符串。Python中是不区分单引号、双引号和三引号的,他们是相同的:

  1. In [81]: 'Hello,world!'
  2. Out[81]: 'Hello,world!'
  3. In [82]: "Hello,world!"
  4. Out[82]: 'Hello,world!'
  5. In [83]: '''Hello,world'''
  6. Out[83]: 'Hello,world'

肯定有萌新会问,搞这么多幺蛾子干啥,统一用一个不就完了,我就默默笑笑不说话:

  1. In [84]: 'i'm MinuteSheep'
  2. File "<ipython-input-84-a2a810ee38cb>", line 1
  3. 'i'm MinuteSheep'
  4. ^
  5. SyntaxError: invalid syntax

看!报错了竟然,为什么呢?因为Python会自动匹配最近的符号与之闭合,所以就会出现上面的情况,做如下修改:

  1. In [85]: "i'm MinuteSheep"
  2. Out[85]: "i'm MinuteSheep"

同样的,三引号用于多行,或者内容符号混乱的情况:

  1. In [87]: '''i'm MinuteSheep,i said:"i'm the best man in the world!"'''
  2. Out[87]: 'i\'m MinuteSheep,i said:"i\'m the best man in the world!"'
  3. In [86]: '''
  4. ...: i'm MinuteSheep,
  5. ...: i said:
  6. ...: "i'm the best man in the world!"
  7. ...: '''
  8. Out[86]: '\ni\'m MinuteSheep,\ni said:\n"i\'m the best man in the world!"\n'

完美解决,还记得\n是什么吗,是换行意思的啦,同样你会发现i'm变成了i'm,这其实是转义的显示,转义以后会讲到的啦

又有萌新出来作妖了,你上一节不是说三引号是多行注释吗,这一节怎么变成了字符串啦?

这个问题问的好!看我的解释,有图有真相:

直接三引号内容,是注释,只要将三引号内容赋给变量,就是字符串

字符串还有很多方法,之后会专门有一小节详细的讲解字符串的方法。

列表(list)

对于列表,萌新可能会很陌生,你可以暂时把它理解为一维数组,列表的在Python中的使用次数也是相当多的,是除字符串以外必须掌握的一种数据类型。来看看列表长啥样:

  1. In [88]: ['MinuteSheep', 'LiMing', '123', 123]
  2. Out[88]: ['MinuteSheep', 'LiMing', '123', 123]

可以看到,被一对方括号括起来的数据就是列表,刘表里面可以又其他数据类型,上面的列表包括:字符串和整型。当然,列表可以包含列表,称为列表的嵌套:

  1. In [89]: ['MinuteSheep', ['LiMing', 123]]
  2. Out[89]: ['MinuteSheep', ['LiMing', 123]]

关于列表,还有好多具体的方法,这里不一一介绍,之后也会有专门的一小节讲解列表方法。

元组(tuple)

元组可能就更陌生了,元组其实是不可变列表,列表用一队方括号括起来,元组则用一对圆括号括起来,列表是可以被操作的(比如增、删、改、查),但是元组不行,元组不可被更改,来看看元组长啥样哇:

  1. In [90]: ('MinuteSheep','LiMing',123)
  2. Out[90]: ('MinuteSheep', 'LiMing', 123)

字典(dict)

字典是Python的一种非常强大的数据类型,通过键值对的形式将数据保存下来,提高了数据增、删、改、查的速度,通常作为数据存储的格式,也来看看字典长啥样哇:

  1. In [91]: {'name': 'MinuteSheep', 'gender' : 'male', 'age': 99}
  2. Out[91]: {'age': 99, 'gender': 'male', 'name': 'MinuteSheep'}

可以看到,字典是用一对花括号括起来的,并且以 'key' : 'value' 的形式存储,同样,字典里面可以包含其他数据类型,上面的字典包括:字符串、整型。当然,字典也可以嵌套:

  1. In [92]: {'name' : 'MinuteSheep', 'age': {'young' : 15, 'old' : 99}}
  2. Out[92]: {'age': {'old': 99, 'young': 15}, 'name': 'MinuteSheep'}

字典也会有专门的一节去讲解它的方法。

二、Python数据运算

说完了Python的数据类型,就该数据运算了,养兵千日,用在一时嘛

算数运算

  1. +
  2. In [93]: 1+2
  3. Out[93]: 3
  4. -
  5. In [95]: 1-2
  6. Out[95]: -1
  7. *
  8. In [96]: 1*2
  9. Out[96]: 2
  10. /
  11. In [97]: 5/2
  12. Out[97]: 2.5
  13. 取模 % (就是取余数)
  14. In [98]: 5%2
  15. Out[98]: 1
  16. 取整 //
  17. In [99]: 5//2
  18. Out[99]: 2
  19. **
  20. In [100]: 5**2
  21. Out[100]: 25

赋值运算

  1. 简单赋值 =
  2. In [102]: a=5
  3. In [103]: b=6
  4. In [104]: c=a+b
  5. In [105]: c
  6. Out[105]: 11
  7. 加法赋值 += b+=a,相当于b=b+a
  8. In [106]: a=5
  9. In [107]: b=6
  10. In [108]: b+=a
  11. In [109]: b
  12. Out[109]: 11
  13. 减法赋值 -= b-=a,相当于b=b-a
  14. In [111]: a=5
  15. In [112]: b=6
  16. In [113]: b-=a
  17. In [114]: b
  18. Out[114]: 1
  19. 乘法赋值 *= b*=a,相当于b=b*a
  20. In [115]: a=5
  21. In [116]: b=6
  22. In [117]: b*=a
  23. In [118]: b
  24. Out[118]: 30
  25. 除法赋值 /= b/=a,相当于b=b/a
  26. In [119]: a=5
  27. In [120]: b=6
  28. In [121]: b/=a
  29. In [122]: b
  30. Out[122]: 1.2
  31. 取模赋值 %= b%=a,相当于b=b%a
  32. In [123]: a=5
  33. In [124]: b=6
  34. In [125]: b%=a
  35. In [126]: b
  36. Out[126]: 1
  37. 取整赋值 //= (b//=a,相当于b=b//a)
  38. In [127]: a=5
  39. In [128]: b=6
  40. In [129]: b//=a
  41. In [130]: b
  42. Out[130]: 1
  43. 幂赋值 **= b**=a,相当于b=b**a
  44. In [131]: a=5
  45. In [132]: b=6
  46. In [133]: b**=a
  47. In [134]: b
  48. Out[134]: 7776

比较运算

  1. 测试相等 ==
  2. In [136]: 1==1
  3. Out[136]: True
  4. In [137]: 1==2
  5. Out[137]: False
  6. 不等于 !=
  7. In [144]: 1!=1
  8. Out[144]: False
  9. In [145]: 1!=2
  10. Out[145]: True
  11. 大于 >
  12. In [146]: 1>1
  13. Out[146]: False
  14. In [147]: 2>1
  15. Out[147]: True
  16. 大于等于 >=
  17. In [149]: 1>=1
  18. Out[149]: True
  19. In [150]: 2>=1
  20. Out[150]: True
  21. 小于 <
  22. In [151]: 6<6
  23. Out[151]: False
  24. In [152]: 6<7
  25. Out[152]: True
  26. 小于等于 <=
  27. In [153]: 6<=6
  28. Out[153]: True
  29. In [154]: 6<=7
  30. Out[154]: True

逻辑运算

  1. 布尔'与' and (有假为假,全真为真)
  2. In [156]: True and False
  3. Out[156]: False
  4. In [157]: True and True
  5. Out[157]: True
  6. In [158]: False and False
  7. Out[158]: False
  8. 布尔'或' or (有真为真,全假为假)
  9. In [159]: True or True
  10. Out[159]: True
  11. In [160]: True or False
  12. Out[160]: True
  13. In [161]: False and False
  14. Out[161]: False
  15. 布尔'非' not (取相反)
  16. In [162]: not True
  17. Out[162]: False
  18. In [163]: not False
  19. Out[163]: True
  20. 身份运算
  21. 判断两个标识符是否引用自同一个对象 is
  22. In [167]: a=b=3
  23. In [168]: a is b
  24. Out[168]: True
  25. In [169]: a=3
  26. In [170]: b=5
  27. In [171]: a is b
  28. Out[171]: False
  29. 判断两个标识符是否引用自不同对象 is not
  30. In [177]: a=3
  31. In [178]: b=5
  32. In [179]: a is not b
  33. Out[179]: True

== 与 is 的区别:

看到这里,很多小伙伴已经晕了,== 和 is 好像一样啊,看起来一样,其实是不一样的,来看下面的这段代码:

  1. In [180]: a = 600
  2. In [181]: b = 600
  3. In [182]: a == b
  4. Out[182]: True
  5. In [183]: a is b
  6. Out[183]: False

其实啊,== 比较的是值,is比较的地址,让我们用 id() 这个函数查看一下变量的地址:

  1. In [184]: id(a)
  2. Out[184]: 2155434581648
  3. In [185]: id(b)
  4. Out[185]: 2155434581904

可以看到,a和b俩个变量的值虽然相同,但地址却不一样,所以使用 == 和 is 的结果自然就不一样。那我们再来看一段代码:

  1. In [187]: a = 10
  2. In [188]: b = 10
  3. In [189]: a == b
  4. Out[189]: True
  5. In [190]: a is b
  6. Out[190]: True
  7. In [191]: id(a)
  8. Out[191]: 1529742064
  9. In [192]: id(b)
  10. Out[192]: 1529742064

萌新是不是莫不着头脑了,用600的时候 is 输出False,用10的时候怎么地址一样了啊,(快回头,有鬼~)其实啊,Python有一个叫做小整数对象池的东西,只要是[-5, 256]之间的整数都会使用同一份地址,这下萌新明白了哇。

位运算

重点说明:位运算针对的是二进制数

  1. 按位与 &
  2. In [193]: a = 15 # 15 = 0000 1111
  3. In [194]: b = 30 # 30 = 0001 1110
  4. In [195]: c = a&b # 14 = 0000 1110
  5. In [196]: c
  6. Out[196]: 14
  7. 按位或 |
  8. In [193]: a = 15 # 15 = 0000 1111
  9. In [194]: b = 30 # 30 = 0001 1110
  10. In [197]: c = a|b # 31 = 0001 1111
  11. In [198]: c
  12. Out[198]: 31
  13. 按位异或 ^
  14. In [193]: a = 15 # 15 = 0000 1111
  15. In [194]: b = 30 # 30 = 0001 1110
  16. In [200]: c = a^b # 17 = 0001 0001
  17. In [201]: c
  18. Out[201]: 17
  19. 按位取反 ~
  20. In [210]: a = 60 # 60 = 0011 1100
  21. In [211]: c = ~a # -61 = 1100 0011
  22. In [212]: c
  23. Out[212]: -61
  24. 左移 <<
  25. In [213]: a = 15 # 15 = 0000 1111
  26. In [214]: c = a<<2 # 60 = 0011 1100
  27. In [215]: c
  28. Out[215]: 60
  29. \#左移后面要加位数
  30. 右移 >>
  31. In [213]: a = 15 # 15 = 0000 1111
  32. In [218]: c = a>>2 # 3 = 0000 0011
  33. In [219]: c
  34. Out[219]: 3
  35. \#右移后面要加位数

Python运算符优先级(从高到底依次排列)

  1. ** # 指数 (最高优先级)
  2. ~ + - # 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
  3. \* / % // # 乘,除,取模和取整除
  4. \+ - # 加法减法
  5. \>> << # 右移,左移运算符
  6. & # 位 'AND'
  7. ^ | # 位运算符
  8. <= < > >= # 比较运算符
  9. <> == != # 等于运算符
  10. = %= /= //= -= += *= **= # 赋值运算符
  11. is is not # 身份运算符
  12. in not in # 成员运算符
  13. not and or # 逻辑运算符

Python的数据类型和运算的更多相关文章

  1. #6 Python数据类型及运算

    前言 前文讲述了Python的输入输出以及变量的相关知识点,本节将探讨Python的数据类型以及数据之间的运算方式! 一.Python数据类型 上一节弄清了变量,其实变量所指向的值是有自己独特的数据类 ...

  2. python基础之01数据类型-变量-运算浅解

    python的数据类型 1  数字 数字分为整型(int),长整型(long),浮点型(float),复数(complex) 整型较为常用的功能: >>> a=-4 >> ...

  3. day02 Python 的模块,运算,数据类型以及方法

    初识pyhton的模块: 什么是模块: 我的理解就是实现一个功能的函数,把它封装起来,在你需要使用的时候直接调用即可,我的印象里类似于shell 的单独函数脚本. python 的模块分为标准的和第三 ...

  4. 1. Python中的基本数据类型、运算、变量

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...

  5. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  6. Day02 - Python 基本数据类型

    1 基本数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 1.1 数字 数字数据类型用于 ...

  7. Python对象类型及其运算

    Python对象类型及其运算 基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = ...

  8. Python基础:八、python基本数据类型

    一.什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但从某种角度上来看又很傻,除非你明确告诉它,"1"是数字,"壹&quo ...

  9. 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】

    1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...

随机推荐

  1. docker官方文档笔记

    Docker在 CentOS7.X上运行.Docker可能在其他EL7的兼容版本中成功安装,但是官方并未进行测试,因此也不提供任何支持. 系统环境要求 docker必须运行在64-bit的系统上,对于 ...

  2. arp绑定IP

    0.拓扑图 1.  现象:for i in `seq 1 20` ;do  sleep 1|telnet www.baidu.com 80 ;done  速度有很明显的卡顿 2.操作:用tcpdump ...

  3. 9-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给AndroidTCP客户端显示)

    http://www.cnblogs.com/yangfengwu/p/8798512.html 补充:今天答应了一个朋友写一下如果单片机发过的是字符串应该怎么解析,答应了今天写,哦哦哦是明天了,闲话 ...

  4. 9、链表 & 状态机 & 多线程

    链表的引入 从数组的缺陷说起 数组有2个缺陷:一个是数组中所有元素的类型必须一致:第二个是数组的元素个数必须事先制定并且一旦指定之后不能更改. 如何解决数组的2个缺陷:数组的第一个缺陷靠结构体去解决. ...

  5. HNOI2018做题笔记

    HNOI2018 寻宝游戏(位运算.基数排序) 看到位运算就要按位考虑.二进制下,\(\land 1\)与\(\lor 0\)没有意义的,\(\land 0\)强制这一位变为\(0\),\(\lor ...

  6. SPOJ Qtree系列 5/7

    Qtree1 树剖裸题 注意把边权移到深度较深的点上,树剖跳的时候不要将LCA的答案统计上就行了 #include<stdio.h> #include<string.h> #d ...

  7. SpringBoot 异常处理

    异常处理最佳实践 根据我的工作经历来看,我主要遵循以下几点: 尽量不要在代码中写try...catch.finally把异常吃掉. 异常要尽量直观,防止被他人误解 将异常分为以下几类,业务异常,登录状 ...

  8. pycharm shortcut

    Alt+F12 is a shortcut to open/hide Terminal panel

  9. NoSql的三大基石:CAP理论&BASE&最终一致性

    关系型数据库的局限 NoSql出现在关系型数据库之后,主要是为了解决关系型数据库的短板,我们先来看看随着软件行业的发展,关系型数据库面临了哪些挑战: 1.高并发 一个最典型的就是电商网站,例如双11, ...

  10. prop和attr的比较

    prop来获取或设置固有属性  removeProp()  删除固有属性 attr来获取或设置自定义属性     removeAttr() 删除自定义属性 案例:全选与全不选 <body> ...