python语法笔记

in在各数据结构中的时间复杂度:

in在列表中的时间复杂度是 O(N)
in在set、字典等中的时间复杂度是 O(1)
set()的实现其实就是字典

定义函数中self的作用:

比如
class muffledcalculator:
muffled=False
def calc(self,expr):
。。。。
这里对象调用方法时, 实际上是通过类调用的:
a = muffedcalculator()
a.calc(expr)
实际上是这样调用的 muffledcalculator.calc(a, expr)
这样self 就是a, python隐含地把a 传进方法从而替代了self, 就成了绑定的方法, 就可以执行了. 否则就是非绑定方法

python中的正负无穷:
负无穷:float(-inf)
正无穷:float(inf)
如:A=float(inf)
python中的str():

>>>str(5)
>>>'5'
>>>A=[]
>>>A.append(str(5))
>>>A
>>>'5'
>>>A.append(str(1))
>>>'5','1'

可以看到python中str()将常数转换成字符串,在转换时会自动给元素加‘’,而且在往数组里添加下一个字符串时,会自动在字符串之间用,隔开

lambda表达式

如:lambda x:x+1(1)

>>>2

可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

1 def g(x):
2 return x+1
  非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。

reduce() 函数

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce() 函数语法:

reduce(function, iterable[, initializer])
参数
function – 函数,有两个参数
iterable – 可迭代对象
initializer – 可选,初始参数

字典中get()函数作用

以classCount.get(voteIlabel,0)为例:
classCount.get(voteIlabel,0)返回字典classCount中voteIlabel元素对应的值,若无,则进行初始化

若不存在voteIlabel,则字典classCount中生成voteIlabel元素,并使其对应的数字为0,即
classCount = {voteIlabel:0}
此时classCount.get(voteIlabel,0)作用是检测并生成新元素,括号中的0只用作初始化,之后再无作用

当字典中有voteIlabel元素时,classCount.get(voteIlabel,0)作用是返回该元素对应的值,即0

以书中代码为例:
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1;

初始化classCount = {}时,此时输入classCount,输出为:
classCount = {}

当第一次遇到新的label时,将新的label添加到字典classCount,并初始化其对应数值为0
然后+1,即该label已经出现过一次,此时输入classCount,输出为:

classCount = {voteIlabel:1}

当第二次遇到同一个label时,classCount.get(voteIlabel,0)返回对应的数值(此时括号内的0不起作用,因为已经初始化过了),然后+1,此时输入classCount,输出为:

classCount = {voteIlabel:2}

可以看出,+1是每一次都会起作用的,因为不管遇到字典内已经存在的或者不存在的,都需要把这个元素记录下来

python中[-1]、[:-1]、[::-1]、[2::-1]的使用方法

import numpy as np
a=[1,2,3.4,5]
print(a)
[ 1 2 3 4 5 ]

print(a[-1]) ###取最后一个元素
[5]

print(a[:-1]) ### 除了最后一个取全部
[ 1 2 3 4 ]

print(a[::-1]) ### 取从后向前(相反)的元素
[ 5 4 3 2 1 ]

print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 3 2 1 ]

二维数组按照某一列排序

例如a=[[1, 3],
[1, 8],
[1, 6],
[0.5, 2]]
想要按照a的第二列排序,也就是用3,8,6,2这几个值对a排序,
可以使用lambda来完成:

  a.sort( key= lambda s: s[1]) 

sort的key=关键字是给出排序的关键字,再通过lambda从a中取出第二列,即s[1],要按第一列就是s[0]


    # 当存在两个参数的时候表示先对哪一个参数进行排序, 当第一个参数相同的时候按照第二个参数对其排序
     li = [[4, 3], [4, 2], [-3, 1], [5, 6]]
    li.sort(key=lambda x: (x[0], x[1]))
    print(li)

sort()和sorted()的升序/降序

这两个函数默认都是升序排序,但可以设置关键字reverse=True即为降序。如

a.sort(reverse=True)

sort()和sorted()的区别

sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。
比如a是待排序列表,a.sort()对a直接进行排序,但是b=sorted(a)之后b等于a的排序结果,而a本身并未改变。
还有一个不同是sort()只能对list用,而sorted()可以对list,字典等集合用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值