访次: AmazingCounters.com 次

七、 二进制位运算

判断一个 字符串在不在一个列表里

 1 name_list = [1,2,3,4,5,'a','b',]
 2 name_list2 = ['q','w','e','r',]
 3 #判断 4 是否在name_list2这个列表里
 4 w = 4 in name_list2
 5 e = 4 in name_list
 6 #如果存在则  返回Ture 如果不存在则返回 Fales
 7 print(w)
 8 print(e)
 9 
10 ###加上判断包含的话
11 if 4 in name_list:
12     print("存在!")
13 else:
14     print("不存在...")
  • 元祖

元组和列表是一样的,元组是只读的,

列表是这个样子的:

 1 [1,2,3,4,5,'a','b',] 

元组是这个样子的:

 1 a = (1,2,3,4,5) 

  • 查看元组的方法:
a = (1,2,3,4,5)
print(a)
print(dir(a))
------------------------------------------------------------------------------------
#输出:
(1, 2, 3, 4, 5)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
------------------------------------------------------------------------------------
有以下两种方法:
count 
index

由此可知,元组只可以做的事情列表都可以做,

  • 如果要把元组改成列表
 1 #定义一个元组
 2 a = (1,2,3,4,5)
 3 #打印一个元组
 4 print(a)
 5 #打印一个元组类型
 6 print(type(a))
 7 #把元组转换为列表
 8 ww = list(a)
 9 #打印列表
10 print(ww)
11 #打印列表类型
12 print(type(ww))
13 ------------------------------------------------------------------------------------
14 #输出:
15 (1, 2, 3, 4, 5)
16 <class 'tuple'>
17 [1, 2, 3, 4, 5]
18 <class 'list'>
  • 元组可以做切片索引的,但是如果要插入、删除、更改 是不可以的

 

  • 运算符:

首先 +-*/ 分别 等于 加减乘除 就不用说了

** 等于 多少次方

// 等于 地板除  取整除-返回商的整数部分小数点被去掉了

1 a = 5//2
2 print(a)
3 
4 
5 
6 ------------------------------------------------------------------------
7 #输出:
8 2
  • == 比较两个对象是否相等
  • != 比较两个对象是否不相等
  • <>比较两个对象是否不相等,Python3中已经被废除了
  • > < = 分别是 大于 小于 等于 不用解释了
  • += 加法赋值运算符
  • -= 减法赋值运算符
  • *= 乘等于--乘法赋值运算符
  • /= 除等于-出发赋值运算符
  • %= 取摸赋值运算符
  • **=幂赋值运算符
# %返回除法的余数
a = 10%3
print(a)
------------------------------------------------------------------------------------
#输出:
1

#如果永远除以2,通过此方法可以盘点 奇、偶数
a = 10%2
b = 9%2
c = 8%2
print(a,b,c)
------------------------------------------------------------------------------------
#输出:
0 1 0

 

  • 位运算:

二进制只有0 和 1 组成

 1 192 换算为二进制
 2 168 换算为二进制
 3 
 4 256    128    64    32    16    8    4    2    1
 5     
 6 0    0    0    0    0    0    0    0    0
 7 0    1    1    0    0    0    0    0    0      [192]
 8 0    1    0    1    0    1    0    0    0    [168]
 9 #从左到右,第一个数字称作第一位,第个数组称作第二位,以此类推到第八个数字称作第八位, 八位数字称作一个字节
10 
11 #一个字节可以表示255个数字
12 #1KB 就是 1024个字节
13 #1M 就是1024KB
14 #1G 就是1024M
15 
16 #位运算就是可以直接进行二进制的
17 实际上 10*2,2*3 1+2  本质上还是进行的二进制的位运算
18 & 按位与运算符    |    (a&b)输出结果12,二进制解释器00001100
19 | 按位或运算符    |    (a|b) 输出结果61,二进制解释器0011110011
20 ^按位异或运算符    |    (a^b)输出结果49,二进制解释器001110001
21 ~按位取反运算符    |    (~a)输出结果-61,二进制解释器11000011,在一个有符号二进制数的补码形式.
22 <<左移动运算符    |    (a<<2)输出结果240,二进制解释器11110000
23 >>右移动运算符    |    (a>>2)输出结果15,二进制解释器00001111
24 
25 
26 下面来看:
27 
28       256          128        64      32      16      8         4       2      1
29 --------------------------------------------------------------------------------
30 10    0                0             0         0         0        1            0        1         0
31 50    0                0             0         1         1        0            0        1         0
32 #与运算就是10 的二进制每一位与50的二进制每一位为真才叫与运算(上下对比 两个都为0是假,两个都为1是真)
33 &     0                0             0         0         0        0            0        1         0 = 2 对应的二进制位置 就是2
34 #所以 10 & 50 等于2,这就是与运算 35 -------------------------------------------------------------------------------- 36 下面看 或运算,或运算 只要有一个为真那就为真(10|50 = 58) 37 | 0 0 0 1 1 1 0 1 0 =58 二进制对应位置相加 等于 58 38 -------------------------------------------------------------------------------- 39 下面看异或运算,异或预算为 一真一假,就为真(10 ^ 50 = 56) 40 ^ 0 0 0 1 1 1 0 0 0 = 56 二进制对应位置相加 等于 56 41 -------------------------------------------------------------------------------- 42移一位, 43 移动之前: 44 10 0 0 0 0 0 1 0 1 0 45 移动之后(10>>1) 46 10 0 0 0 0 0 0 1  0 1 = 5 二进制对应位置相加 等于5 47 向左移动一位:(10<<1) 48 移动后 49 10 0 0 0 0 1 0 1 0 0 = 20 二进制对应位置相加等于20

 

 

  • 逻辑运算符:
 1 and 布尔“与” - 如果X为    False,x  and    y返回False,否则他返回y的计算值
 2 a = "cmd"
 3 b = "aa"
 4 if a == "cmd" and b == "aa":
 5     print("两个条件都满足了.......")
 6 ------------------------------------------------------------------
 7 #输出:
 8 两个条件都满足了.......
 9 
10 or  布尔“或”-如果X是True,他返回True,否则它返回y的计算值
11 a = "cmd"
12 b = "aa"
13 if a == "cmd" or b == "bb":
14     print("满足了一个条件.......")
15 ------------------------------------------------------------------
16 #输出:
17 满足了一个条件.......
18 not 布尔""-如果x为True,返回False,如果X为False,它返回True
19 a = "cmd"
20 b = "aa"
21 if a not in  "bb" or b not in a:
22     print("a 不等于bb,b 也不等于 a")
23 ------------------------------------------------------------------
24 #输出:
25 a 不等于bb,b 也不等于 a
  • 成员运算符描述:
 1 in    如果在指定的序列中找到值返回True,否则返回False.
 2 not in 如果在指定的序列中没有找到值返回True,否则返回False.
 3 
 4 身份运算符;
 5 is    is是判断两个表示服是不是引用自一个对象
 6 例:
 7 判断一个列表是否是列表
 8 a = [1,2,3,4,5]
 9 ww = type(a)
10 if type(a) is list:
11     print("True")
12 else:
13     print("False")
14 ------------------------------------------------------------------
15 #输出:
16 True
17 ------------------------------------------------------------------
18 ww = type(a)
19 if type(3) is list:
20     print("True")
21 elif type(3) is int:
22     print("是一个int......")
23 else:
24     print("False")
25 -----------------------------------------------------------------
26 #输出:
27 是一个int......

 

posted @ 2016-01-11 16:42  IT老登  阅读(894)  评论(0编辑  收藏  举报
访次: AmazingCounters.com 次