一、基础语法和函数相关
1.1 len()函数
返回对象(字符、列表、元祖等)的长度或项目个数。
>>>str = "runoob"
>>> len(str) # 字符串长度
6
>>> l = [1,2,3,4,5]
>>> len(l) # 列表元素个数
5
1.2 chr()函数
用于将一个范围在range(256)
内的整数(也即是 0~255)转换成对应的ASCII码字符。
>>> print chr(0x30) # 十六进制
0
>>> print chr(1) # 十进制数,ASCII码1表示start of heading,什么也不输出
>>> chr(1)
'\x01'
与此相对应的有一个函数 ord()
,则是返回单个ASCII字符对应的ASCII值或Unicode值。
>>> ord('d')
100
>>> ord('A')
65
1.3 xrange() 函数
xrange()
函数用法与range()
完全相同,所不同的是 xrange() 生成的不是一个数组,而是一个生成器。使用方法如下:
1 xrange(stop)
2 xrange(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认为0。如
xrange(5)
等价于xrange(0, 5)
。 - stop: 计数到 stop 结束,但不包括 stop。如
xrange(0, 5)
是[0, 1, 2, 3, 4]
没有5。 - step: 步长,默认为1。如
xrange(0, 5)
等价于xrange(0, 5, 1)
。
range() 方法返回的是一个list对象,它需要开辟专门的空间保存序列中所有的元素。
xrange() 方法返回的是xrange对象,它是一个序列对象,但并不保存序列中的元素。
根据python官方文档的定义,一个序列对象不必要保存所有的元素。
如果只对序列进行读操作,xrange()方法效率较高;但如果要改变序列的元素,或者需要对序列增删元素,那么只能通过range()方法生成一个list对象。
1.4 with关键字
如果你有两个想做的操作,你想要这两个操作成对执行,中间插入一段其他的代码,那么使用 with 就是一种很方便的方法。
最经典的例子就是打开一个文件,对文件进行操作然后关闭文件。
1 with open('output.txt', 'w') as f:
2 f.write('Hi there!')
上面的with语句会在嵌入的程序运行完后自动关闭文件。好处就是无论嵌套模块如何退出,都可以保证文件被关闭。
如果嵌套模块结束之前有异常发生,系统将在异常被外部异常处理程序捕获之前关闭该文件。
如果嵌套模块中包含有return
语句、continue
语句或者break
语句,with
语句一样可以在跳转之前自动关闭文件。
1.5 lambda表达式
相对于def
定义的函数而言,lambda
表达式则简单很多,因为其主体是一个表达式而非代码块,
并允许在代码内嵌入一个函数定义,不过一般只能封装有限的逻辑。
如下面的例子所示,lambda表达式定义了一个匿名函数,用于筛选100以内3的倍数,并生成一个列表。
list (filter(lambda x:True if x % 3 == 0 else False, range(100)))
当然lambda表达式也可以嵌套在函数体内,使用的时候可以用一个变量来接收,如下:
1 def make_repeat(n):
2 return lambda s : s * n
3
4 double = make_repeat(2) # double变量此处是一个函数
5 print (double(8)) # 使用double向lambda表达式里的s传一个参数,并得到表达式的结果
二、数据结构相关
2.1 字典
2.1.1 如何判断字典中是否存在某个key?
在Python 2.x 时可以使用内置函数 has_key(),Python 3.x 以后不再支持该函数,被__contains(‘keyname’)所替代。
推荐使用如下的 in 方法
~ $ python3
>>> d = {'name':{},'age':{},'sex':{}}
>>> print name in d.keys()
True
2.1.2 删除字典内所有元素
clear()方法
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'name': 'blogsite', 'alexa': 10000, 'url': 'http://blog.csdn.net/'}
dict.clear()
2.1.3 删除字典给定键 key 所对应的值,返回值为被删除的值
pop()方法
#!/usr/bin/python
# -*- coding: UTF-8 -*-
site= {'name': 'blogsite', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
pop_obj=site.pop('name') # 删除要删除的键值对,如{'name':'blogsite'}
print pop_obj # blogsite
2.1.4 为字典添加键值对
如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:
dict[key] = value
2.1.5 计算字典元素个数
可以使用内置函数 len() 来计算字典元素个数,即键的总数。
2.1.6 遍历字典
items()
函数将返回键值对列表,keys()
函数将返回键列表,values()
函数将返回一个值列表。
-
(a) 遍历所有键值对
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.items(): print("\nKey:" + key) print("Value:" + str(value))
-
(b) 遍历所有键
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.keys(): print(key)
其实还有一种更简便的写法,可以把 keys() 方法省略。
因为遍历字典时,如果你在 for 后面仅声明一个变量,Python会默认遍历所有的键并依次将键赋值给这个变量。dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict: print(key)
-
(c) 遍历所有值
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.values(): print("Value:" + str(value))
2.1.7 合并字典
合并字典有两种方法,一种是使用 update()
函数,还有一种是利用 **
的用法自定义合并。
-
(a) 使用 update() 方法
使用内置函数,将新的字典合并到当前字典中。函数参数为希望添加到指定字典dict里的字典。该方法没有任何返回值。
合并过程可能出现以下两种情况:
(1)有相同的键时:会使用最新的字典中该键对应的值做为最终结果。
(2)有新的键时:会直接把字典中的键值对加入到当前字典中。dict_1 = {'Id001': 1, 'Id002': 2} dict_2 = {'Id001': 0, 'Id003': 3, 'Id004': 4} dict_2.update(dict_1) print(dict_2)
输出结果如下:
{'Id001': 1, 'Id003': 3, 'Id004': 4, 'Id002': 2}
-
(b) 使用 **,函数将参数以字典的形式导入
def Merge(src_dict_1, src_dict_2): dst_dict = {**src_dict_1, **src_dict_2} return dst_dict dict_1 = {'Id001': 1, 'Id002': 2} dict_2 = {'Id003': 3, 'Id004': 4} dict_3 = Merge(dict_1, dict_2) print(dict3)
输出结果如下:
{'Id001': 1, 'Id002': 2, 'Id003': 3, 'Id004': 4}
2.2 列表
2.2.1 判断元素是否在列表
可以使用 in 方法,也可以使用内置函数 index()。
num = [1,2,3,4,5]
a = 3
if a in num:
print("a=%d is in list num" % a)
b_idx = num.index(a)
print("The index of a=%d in the list is %d" % (a, b_idx))
三、格式化输入输出相关
3.1 python3设置print输出不换行
函数原型
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
对应参数含义如下
- objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
- sep -- 用来间隔多个对象,默认值是一个空格。
- end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
- file -- 要写入的文件对象。
- flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
根据函数定义,默认情况下是每个print打印完成后自动换行的。
如果输出时不想换行,只需要给参数 end 赋值为空。
print (123,end='')
print (456,end='')
# 输出结果如下
123456
四、集成库相关
4.1 使用开源算法库opencv
需要先安装相关的库文件
pip3 install opencv-contrib-python
如果下载速度太慢可以更换下载源,使用如下命令
pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
(全文完)
参考资料
[1] PYTHON中XRANGE和RANGE https://www.cnblogs.com/shixisheng/p/7089930.html
[2] python lambda表达式 https://www.cnblogs.com/jydeng/p/4145188.html