码迷,mamicode.com
首页 > 编程语言 > 详细

python基础8 数据类型和数据运算

时间:2017-07-20 10:19:04      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:ref   set   不可变   数据   入门   csdn   表达式   数学   -o   

本节内容:

  1. 数据类型
  2. 数据运算
  3. 入门拾遗
  4. 参考网页

数据类型

数字

int(整型)

在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647  在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807

long(长整型)

跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。

注意

自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

python2里 2的62次方是int,2的63次方变成长整型。python3里都是整型,没有长整型概念。

float(浮点型)

浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

  • complex(复数)   复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。 注:Python中存在小数字池:-5 ~ 257

补充

3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。

布尔值

真或假   1 或 0

字符串

"hello world" 字符串拼接:   python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,拼接+号每出现一次就会在内从中重新开辟一块空间。

字符串格式化输出

name = "cathywu"
print ("I am %s " % name)

#输出: I am cathywu

字符串是 %s;整数 %d;浮点数%f

字符串常用功能:

  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

列表

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

创建列表:

name_list = [‘Cathywu‘, ‘seven‘, ‘eric‘]

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含

元组(不可变列表)

元组tuple是另一种有序的列表。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

创建元组:

ages = (11, 22, 33, 44, 55)

字典(无序)

字典查找速度快,无序,作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

创建字典:

person = {"name": "mr.wu", ‘age‘: 18}

常用操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

集合

集合是无序的,不重复的元素集,类似数学中的集合,可进行逻辑运算和算术运算

创建集合

s = set([‘A‘, ‘B‘, ‘C‘])

数据运算

算术运算

以下假设变量: a=10,b=20:

运算符描述实例
+ 加 两个对象相加 a+b输出30
- 号负或减 负数或是一个数减去另一个数 -a 或 a-b输出-10
* 乘 两个数相乘或返回一个被重复若干次的字符串 a*b输出200
/ b/a输出2
% 取模 返回除法的余数 b%a输出0
** 幂 返回x的y次幂 a**b为10的20次幂
// 取整 返回商的整数部分 9//2输出4,9.0//2.0输出4.0

比较运算

运算符描述实例
== 等于 比较对象是否相等 (a==b)返回False
!= 不等于 比较两个对象是否不相等 (a!=b)返回True
<> 不等于 比较两个对象是否不相等 (a<>b)返回True
> 大于 返回x是否大于y (a>b)返回False
< 小于 返回x是否小于y (a<b)返回True
>= 大于等于 返回x是否大于等于y (a>=b)返回False
<+ 小于等于 返回x是否小于等于y (a<b)返回True

赋值运算

运算符描述实例
= 简单的赋值运算符 c=a+b将a+b的运算结果赋值为c
+= 加法赋值运算符 c+=a 等效于 c= c+a
-= 减法赋值运算符 c-=a 等效于 c= c-a
*= 乘法赋值运算符 c*=a 等效于 c= c*a
/= 除法赋值运算符 c/=a 等效于 c= c/a
%= 取模赋值运算符 c%=a 等效于 c= c%a
**= 幂赋值运算符 c**=a 等效于 c= c**a
//= 取整除赋值运算符 c//=a 等效于 c= c//a

逻辑运算符

运算符逻辑表达式描述实例
and x and y 布尔“与”,如果x为False, x and y 返回False,否则返回y的计算值。 (a and b) 返回 20。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

成员运算

运算符描述实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

身份运算

运算符描述实例
is is是判断两个标识符是不是引用自一个对象 x is y, 如果 id(x) 等于 id(y) , is 返回结果 1
is not is not是判断两个标识符是不是引用自不同对象 x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1

位运算符

按位运算符是把数字看作二进制来进行计算的。 变量 a 为 60,b 为 13,二进制格式如下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
运算符描述实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
按位或 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a按位或b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

运算符优先级

运算符描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 ‘AND‘
^ 按位或 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符

入门拾遗漏

三元运算

三元运算,是软件编程中的一个固定格式。

  • 格式 语法为:条件表达式?表达式1:表达式2。 说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。 其逻辑为:“如果为真执行第一个,否则执行第二个。”
  • 例子 1 if 5>3 else 0 输出1,如果5大于3,否则输出0

进制

十六进制

0 1 2 3 4 5 6 7 8 9 A B C D E F

十六进制与二进制对应关系

二进制十六进制二进制十六进制
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

二进制转换成十六进制

二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位 二进制: 11101110011011.1001 化为十六进制为:3B9B.9

十六进制转化为二进制

组分好以后,对照二进制与十六进制数的对应表,将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变哦,最后得到的就是十六进制数。 十六进制:F8C.6 二进制:111110001100.011

注意16进制的表示法,用字母H后缀表示,比如BH就表示16进制数11;也可以用0X前缀表示,比如0X23就是16进制的23.

bytes类型

python2 里字节和字符是一样的。 python3里有专门的数据类型 bytes。 python3里所有的数据传输都是以二进制形式传输。python2可以以字符串的形式传输。

Python 3中对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。 python3里所有的数据传输都是以二进制形式传输。python2可以以字符串的形式传输。 字符串可以编码成字节包,而字节包可以解码成字符串。如下图:

stringbytesencodedecodestringbytes

举例:

>>>‘€20‘.encode(‘utf-8‘)
b‘\xe2\x82\xac20‘
>>> b‘\xe2\x82\xac20‘.decode(‘utf-8‘)
‘€20‘

参考网页

http://www.runoob.com/python/python-operators.html

http://blog.csdn.net/wenxinwukui234/article/details/42119265

http://www.cnblogs.com/txw1958/archive/2012/07/19/2598885.html

python基础8 数据类型和数据运算

标签:ref   set   不可变   数据   入门   csdn   表达式   数学   -o   

原文地址:http://www.cnblogs.com/cathywu/p/7209140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!