bool
数值变量
bool(a) = 0 while a = 0 or 0.0
容器变量
bool(a) = 0 while a is empty
获取类型信息
type(a) or isinstance(a,b)
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系
类型转换
转换为整型 int(x, base=10)
转换为字符串 str(object=’’)
转换为浮点型 float(x)
print函数
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'sep='&''.")
for item in shoplist:
print(item, 'another string', sep='&')
#This is printed with ‘sep=’&’’.
apple&another string
mango&another string
carrot&another string
banana&another string
位运算
a & b —> 全部为1时 结果为1
a | b —> 一个为1 结果为1
a ^ b —> 两个数不同时 结果为1
异或的作用
1. 快速比较两个数的值
a - b = 0 ----> a ^ b = 0
2. 判断一个二进制数的1的个数的奇偶
将a中的每一位按位逐一进行异或,例如a=4'b1010,则b=1^0^1^0=0,
由此可以判断a中为1的位数是奇数还是偶数,是一个便捷的操作
3. 不使用其他空间,交换两个值
a = a ^ b b = a ^ b
4. 最最常出现的面试题:一个整型数组里除了N个数字之外,其他的数字都出现了两次,找出这N个数字
将所有数都异或一边,就是结果
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字?
思路: 第一步:肯定还是像我们上面的解法一样,所有数进行异或,不过最终得到的结果是 a 和 b(假设 a 和 b 是落单的数字)两个值的异或结果 aXORb,没有直接得到 a 和 b 的值;
第二步:想办法得到 a 或者 b,假设 aXORb 为 00001001(F肯定不为0),根君 aXORb 的值我们发现,值为1的位(比如从右向左第一位)表示在此位上 a 和 b 的值不同;所以,根据这个特点,我们找出来所有第一位为1的数进行异或,得到的就是 a 或者 b;
第三步:aXORb = a ^ b,假设我们已经找到了 a,根据异或特性,我们知道,b = aXORb ^ a;这样我们就可以找出 b;所以我们只需要循环两次;
条件语句
if 语句
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
expr_false_suite
assert关键字
当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常
while 语句
while 布尔表达式:
代码块
else:
代码块
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
for语句
for
循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple
等,也可以遍历任何可迭代对象,如dict
。
for 迭代变量 in 可迭代对象:
代码块
range 函数
range([start,] stop[, step=1])
左闭右开
range(2,9, 2 )每两个输出
enumerate()函数
enumerate(sequence, [start=0])
- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置。
- 返回 enumerate(枚举) 对象
用 enumerate(A) 不仅返回了 A 中的元素,还顺便给该元素一个索引值 (默认从 0 开始)。此外,用 enumerate(A, j) 还可以确定索引起始值为 j。
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!
注意这个 循环的元素 i 和 language
try - except 语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
要执行的代码
try 语句按照如下方式工作:
- 首先,执行
try
子句(在关键字try
和关键字except
之间的语句) - 如果没有异常发生,忽略
except
子句,try
子句执行后结束。 - 如果在执行
try
子句的过程中发生了异常,那么try
子句余下的部分将被忽略。如果异常的类型和except
之后的名称相符,那么对应的except
子句将被执行。最后执行try - except
语句之后的代码。 - 如果一个异常没有与任何的
except
匹配,那么这个异常将会传递给上层的try
中。