还是不多说话了。。
1.eval函数
用法:eval(expression, globals=None, locals=None)
解释:将字符串str当成有效的表达式来求值并返回计算结果。
使用:
a = 1 b = 1 val1 = a + b val2 = eval("a+b") def f(): a = 10 b = 10 val3 = eval("a+b",globals()) val4 = eval("a+b") return val3,val4 print(val1,val2,f()) #2 2 (2, 20)
2.sort sorted用法
只要是可迭代对象数据,都能够进行排序,生成一个排序后的列表。
list.sort()函数会对list进行排序操作,改变原有list;而sorted(list)之后会返回一个copy,不会对原来的list有影响。
sorted(iterable, key=None, reverse=False)
list.sort(iterable, key=None, reverse=False)
两者参数一模一样,因此用代码加以区分:
a = [1,5,3,9,7] b = [9,3,7,2,6] print(a.sort()) print(a) print(sorted(b)) print(b) #None #[1, 3, 5, 7, 9] #[2, 3, 6, 7, 9] #[9, 3, 7, 2, 6]
3.split 用法
Python中有split()和os.path.split()两个函数,具体作用如下:
split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
os.path.split():按照路径将文件名和路径分割开
str.split(str="",num=string.count(str))[n]
str:分隔符,默认为空格,但是不能为空'',如果没有分隔符,就把整个字符串作为列表的第一个元素。
num:分割次数。
[n]:取第n个分片。
使用:
str = "http://cnblogs.com/aoru45" val1 = str.split() val2 = str.split("/") val3 = str.split("/",2) val4 = str.split("/",2)[0] print(val1,val2,val3,val4) #['http://cnblogs.com/aoru45'] ['http:', '', 'cnblogs.com', 'aoru45'] ['http:', '', 'cnblogs.com/aoru45'] http:
4.list各种操作和操作的时间复杂度
Operation | Average Case | |
Copy | O(n) | O(n) |
Append[1] | O(1) | O(1) |
Pop last | O(1) | O(1) |
Pop intermediate | O(k) | O(k) |
Insert | O(n) | O(n) |
Get Item | O(1) | O(1) |
Set Item | O(1) | O(1) |
Delete Item | O(n) | O(n) |
Iteration | O(n) | O(n) |
Get Slice | O(k) | O(k) |
Del Slice | O(n) | O(n) |
Set Slice | O(k+n) | O(k+n) |
Extend[1] | O(k) | O(k) |
O(n log n) | O(n log n) | |
Multiply | O(nk) | O(nk) |
x in s | O(n) | |
min(s), max(s) | O(n) | |
Get Length | O(1) | O(1) |
5.help函数的使用
使用help()可以帮助我们迅速了解某个函数的作用。同时呢,当我们定义某个函数的时候,我们也一样可以写一些帮助方便别人理解。
当我输入help(print)的时候呢,终端会返回:
Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
我们便可以看到print函数的说明和参数情况。
当我们自己定义函数的时候呢,我们可以这样:
def f(int a): '''this is a function that returns a+1''' return a+1 help(f) #会输出 #Help on function f in module __main__: #f(a=0) # this is a function that returns a+1
6. = copy.copy copy.deepcopy区别
copy和deepcopy都能实现拷贝的操作,不同的是,copy拷贝的过程中不会创建新空间,看下面的例子,b使用copy拷贝了a,当a的2改为99的时候,b的值也改变了,但是为什么a添加[7,8,9]的时候,b没有添加呢,原来,b拷贝的只是a原有的list中的两个地址,当a添加一个元素的时候呢,相当于加了一个地址,而在b中没拷贝,所以b还是不添加元素。c是deepcopy来的,a的任何变化都不能影响c的变化。copy只是复制了简单对象,复杂对象如嵌套的list会作为公共元素,因此修改原对象的复杂对象会导致copy后的对象元素修改。
import copy a = [[1,2,3],[4,5,6]] b = copy.copy(a) c = copy.deepcopy(a) a.append([7,8,9]) a[0][1] = 99 print(a) print(b) print(c) ''' [[1, 99, 3], [4, 5, 6], [7, 8, 9]] [[1, 99, 3], [4, 5, 6]] [[1, 2, 3], [4, 5, 6]] '''
7.*l 函数接受任意个数参数 **kw 函数接受任意个关键字参数
在python中,使用*可以接受任意个数的参数,而使用**可以接受任意个数的关键字参数。
def a(*l): result = 0 for val in l: result = result + val return result def b(**kw): result = 0 result = kw["keyword_1"]+kw["keyword_2"] return result print(a(1,2,3,4,5)) print(a(1,2,3)) print(b(keyword_1 = 10,keyword_2=20)) ''' 15 6 30 '''
参考:
1.python eval() https://www.cnblogs.com/dadadechengzi/p/6149930.html
2.Python 内置函数sorted()在高级用法 https://www.cnblogs.com/brad1994/p/6697196.html
3.Python中的split()函数的用法 https://www.cnblogs.com/hjhsysu/p/5700347.html
4.list各种操作和操作的时间复杂度 https://wiki.python.org/moin/TimeComplexity