本节内容:
- 数据类型
- 数据运算
- 入门拾遗
- 参考网页
数据类型
数字
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 |
运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 [email protected] 和 [email protected]) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 ‘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