标签:uil 表达式 pytho 创建 名字空间 分片 reverse inter bsp
用py也很久了,很多东西只知道拿来用,并没有深究,感觉这样是不够的。
我决定写这么一篇总结,把很多遗忘的东西拾起来,把很多没搞懂的东西搞清楚。
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)
只要是可迭代对象数据,都能够进行排序,生成一个排序后的列表。
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]
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:
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) |
使用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
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的变化。
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]] ‘‘‘
在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
标签:uil 表达式 pytho 创建 名字空间 分片 reverse inter bsp
原文地址:https://www.cnblogs.com/aoru45/p/9894770.html