[学习总结] python语言学习总结 (一)
还是不多说话了。。
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
[学习总结] python语言学习总结 (一)的更多相关文章
- [学习总结] python语言学习总结 (三)
函数闭包 定义 延伸了作用域的函数(能访问定义体之外定义的非全局变量 作用 共享变量的时候避免使用了不安全的全局变量 允许将函数与某些数据关联起来,类似于简化版面向对象编程 相同代码每次生成的闭包,其 ...
- [学习总结] python语言学习总结 (二)
1.python中的拆包 之前就只写了*可以是未知数量的参数,**可以传入未知数量命名参数.这次详细记下拆包. def f1(a, *l): print(a) # 不拆包 print(l) # 拆包 ...
- python语言学习
前段时间要做视频直播需要编写自动模块,就考虑使用python脚本语言,python的好多语法都是很独特的,比如数据类型不需要预定义,缩进的方式等,另外功能也很强大,豆瓣就是用python写的.我写的部 ...
- Python语言学习之Python入门到进阶
人们常说Python语言简单,编写简单程序时好像也确实如此.但实际上Python绝不简单,它也是一种很复杂的语言,其功能特征非常丰富,能支持多种编程风格,在几乎所有方面都能深度定制.要想用好Pytho ...
- python语言学习1——初识python
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python ...
- Python语言学习之C++调用python
C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进 ...
- python语言学习笔记整理
什么是程序? 程序等于数据结构加算法,那么数据结构是一个静态的东西,算法是一个动态的东西,我们用一个新的语言编写这个程序,我们要考虑到语言也主要由数据结构和算法相关的东西,或静态或动态的东西来构成,所 ...
- 值得关注的10个Python语言学习博客
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- python语言学习8——字符串和编码
Unicode编码 计算机只能处理数字,如果要处理文本,就必须把文本转化为数字才能处理 有许多编码标准,但是不同的编码标准有时候会混乱,所以Unicode应运而生 Unicode把所有语言统一到一套编 ...
随机推荐
- QDUOJ ycb的ACM进阶之路 二进制多重背包
ycb的ACM进阶之路 发布时间: 2017年5月22日 14:30 最后更新: 2017年5月22日 14:31 时间限制: 1000ms 内存限制: 128M 描述 ycb是个天资聪颖 ...
- PHP中GD库是做什么用的? PHP GD库介绍11111111
什么是gd库? gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据 ...
- 【Unity】物理碰撞实验
http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html 这几天为了准备面试,所以决定对平时学习中的盲点扫盲一下,首先想到的就 ...
- GridSearchCV.grid_scores_和mean_validation_score报错
目录 GridSearchCV.grid_scores_和mean_validation_score报错 0. 写在前面 1. 问题描述和解决过程 2. 不想比比直接看结果部分 GridSearchC ...
- JSF 与 struts2
http://suhuanzheng7784877.iteye.com/blog/1041411
- com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_ABORTED: User rejected permissions
原因是连接了两个设备,所以无法启动,关掉一个即可
- Django之Form的ModelForm
form与model的终极结合. from django import forms class BookForm(forms.ModelForm): class Meta: model = model ...
- 题解 P1854 花店橱窗布置
把二维压成一维的DP了解一下... 传送门 (以纪念神经兮兮调了两天的一维DP(刷水题谋财害命)以及感谢学长的帮助@ydnhaha) 显然我们有二维的dp:f[i][j]代表第i盆花放到第j个位置 ; ...
- 【考试记录】Educational Codeforces Round 59 (Rated for Div. 2)
本来准备划水,结果被垃圾题艹翻了…… T2题意: 定义一个数$x$的数字根$S(x)$为:将其各位数字相加得到一个新数,再将新数的数字和相加直到得到一个个位数,就是该数的数字根. 例如:$S(38)= ...
- GYM 101933I(贪心、大整数)
我读题有问题呀,题目中到底哪里保证数据一定至少是2倍关系了Orz--然后既然题意就是保证了那贪心一下即可,因为如果当前这个大的不选,那剩下一堆逐渐小于上一代的1/2的,凑起来都不如这个大的,更别说答案 ...