python基础8 数据类型和数据运算,,本节内容:数据类型数


本节内容:

数据类型数据运算入门拾遗参考网页

数据类型

数字

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

逻辑运算符

运算符逻辑表达式描述实例
andx and y布尔“与”,如果x为False, x and y 返回False,否则返回y的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot 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。

身份运算

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

位运算符

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

a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^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

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

二进制十六进制二进制十六进制
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F

二进制转换成十六进制

二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位 二进制: 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 数据类型和数据运算

评论关闭