[学习总结] 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把所有语言统一到一套编 ...
随机推荐
- JAVA学习笔记——(五)
今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...
- 如何在 Swoole 中优雅的实现 MySQL 连接池
如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...
- 数据可视化系列--svg入门基础(一)
一.前言 1.SVG(Scalable Vector Graphics)可伸缩矢量图形 特点: (1)使用xml格式来定义图形: (2)用来定义web上的使用的矢量图: (3)改变图像尺寸,图片质量不 ...
- Python绘制正态分布曲线
使用Python绘制正态分布曲线,借助matplotlib绘图工具: \[ f(x) = \dfrac{1}{\sqrt{2\pi}\sigma}\exp(-\dfrac{(x-\mu)^2}{2 ...
- ugui获取text宽
http://www.xuanyusong.com/archives/3587 void Start () { Font font = Resources.Load<Font>(" ...
- poj1144 tarjan求割点
poj1144 tarjan求割点 额,算法没什么好说的,只是这道题的读入非常恶心. 注意,当前点x是否是割点,与low[x]无关,只和low[son]和dfn[x]有关. 还有,默代码的时候记住分目 ...
- 洛谷P1132 数字生成游戏
P1132 数字生成游戏 题目描述 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 将s的任意两位对换生成新的数字,例如143可以生成314,413,134 ...
- [Swift]Xcode实际操作
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Ubuntu下安装wine plsql
在电脑上安装了第二系统Ubuntu,但面临各种Linux不支持的开发软件也是束手无策.比如常用的Eclipse,PlSQl,Oracle,QQ等等,于是,上网查阅各种资料,最终的解决方案还是要依赖于w ...
- 解决lnmp无法远程登录的bug
使用lnmp一键安装好linux环境后,不能远程连接到所在服务器的mysql,但是通过80端口可以登录phpmyadmin,发现原来是因为lnmp的大多数版本为了安全不禁止远程连接mysql,方法很简 ...