python语法和java,python语法面试题
Python基础语法Python部分总结文章目录Python基础语法Python部分总结一些废话赋值对象的属性和方法可以直接访问。检查两个引用是否指向同一个对象——` is `关键字变量对象和不可变对象常见标量类型范围函数三元表达式列表字典列表字典集合的派生映射、归约、过滤函数生成器
一些废话。
最近写Python代码,发现自己的代码很长,一个小模块做了200行。而且代码太多,调试速度很慢。我开始怀疑我会不会写Py,所以想复习一下Python语法。在这里,我想总结一下我看到的Pythonic部分的语法。
赋值Python赋值是一个参考赋值。因此,当一个函数传递一个参数时,改变(而不是简单地分配其他值)实参的值也会改变传递到函数外部的变量。
可以直接访问对象的属性和方法。除了使用成员访问器之外,还可以通过getattr方法和setattr方法直接访问对象的属性。这种通过名称访问对象属性的方式也称为“反射”
检查两个引用是否指向同一个对象。——是关键字可变对象和不可变对象Python中的大多数对象都是可变对象,即对象中包含的元素和值都是可以修改的,比如列表、字典、自定义对象等。其他对象,如字符串和元组,都是不可变的对象。
常见的标量类型描述NonePython中的“null”值(只有一个实例)str字符串类型,其中包含Unicode (UTF-8编码)字符串字节Native ASCII字节(或Unicode编码字节)float双精度64位浮点值(没有独立的double类型)boolTrue或Falseint任意精度无符号整数字符串格式化方法:str.format()方法
Prototype: S.format(*args,**kwargs)-str
替换字段:= { [字段名称] [!转换] [:格式规格] } 字段名称:=参数名称(.attribute _ name [ element _ index ])* arg _ name:=[identifier digit]attribute _ name:=identifier element _ index:=digit index _ string index _ string:=除]以外的任何源字符转换:=r s A format _ spec:=在下一节中描述range函数range函数返回一个迭代器,该迭代器生成一系列算术整数。
三元表达式值=true-expr if条件else false-expr与以下代码效果一致:
if condition:value=true-relax:value=false-exprlist list list增加的元素有append方法和insert方法,insert方法开销更大。如果想在序列的开头和结尾插入元素,可以考虑collections.deque
insert方法的逆操作是pop,可以通过remove方法移除元素,remove方法定位第一个符合要求的值并将其移除。
用in关键字检查一个值是否在列表中,但是过程是一个一个线性扫描,所以很慢。但是字典和集合都是基于哈希表的,所以这个过程会非常快。
排序列表的两个子搜索和维护
内置的对分模块实现了排序列表的二分搜索法和插值。二等分.二等分会找到元素应该插入的位置并保持序列排序,而二等分. insort会将元素插入相应的位置。
切片:列表的切片操作为seq[start:stop],其中区间为[start:stop]的左闭右开区间。
seq[::s] 意思是每隔 s 个取一个数值
seq[::-1] 向步进传值 -1 可以对列表或者元组进行翻转
枚举内置函数作用于迭代对象时返回(I,value)元组序列,遍历一个序列时可以跟踪当前元素的索引。
Prototype: enumerate (iterable [,start])-索引的迭代器,iterable的值
示例:
strings=[foo , card , bar , aaaaaa , abababa]for index,value in enumerate(strings):print( index:{ 0 } value:{ 1 } )。format(index,Value))# output # index:0 Value:foo # index:1 Value:card # index:2 Value:bar # index:3 Value:AAAAAA # index:4 Value:Abababa Dict字典可以使用del方法从字典中删除关键字,同时pop方法会返回删除的值。
keys方法和值方法分别返回提供字典键和值的迭代器。
更新可以合并两个字典。
从序列生成字典有两种方法:
最容易想到的低效写作方式是
Mapping={} for key,value in zip (key _ list,value _ list): mapping [key]=value一种有效的写法是
Mapping=dict (zip (range (5),reversed (range (5)))另一种高效的书写方法是字典生成。
系统默认值
字典的get方法和pop方法可以返回默认值:
if key in some _ dict:value=some _ dict[key]else:value=default _ value #上面代码的一个高效实现如下:value=some _ dict.get (key,default _ value)。同样,字典赋值也有相应的方法。
words=list(some_value,)by _ letter={ } for word in words:letter=word[0]if letter not in by _ letter:by _ letter[letter]=[word]else:by _ letter[letter]。append(word)#上述代码的高效实现如下:for word in words:letter=word[0]by _ letter . set default(letter,[])。append (word) #使用内置的集合模块defaultdict可以实现同样的功能。从集合导入DefaultDictby _ letter=DefaultDict(list)for word in words:by _ letter[word[0]]。append(word)Derivative list of list、dictionaries和sets Derivative list允许过滤容器中的元素,并用简洁的表达式转换传递给过滤器的元素,从而生成新的列表。
# list production writing[expr for val in collection if condition]# equivalent for circulation writing result=[]for val in collection:if condition:result。附加(表达式)字典派生
dict _ comp={ key-expr:value-expr for value in collection if condition }集合派生
set _ comp={ expr for value in collection if condition }嵌套列表派生:可用于展平容器。
flattened=[x for tupin some _ tuples for some _ tuples in some _ lists if condition]map,Reduce,Filter引用链接:Map,Filter,Reduce
Map:对序列中的元素执行一次函数(item)。
原型:Map (func,* iterables)-MapObject
示例:
F (x): return x * * 2data=[1,2,3,4,5,6,7,8,9] result=map (f,data)result # output:map at0x 7 fdb 80523470 list(result)# output:[1,4,9,] 49,64,81] Reduce:迭代计算序列上的元素,直到序列缩减为一个值,返回最终结果。
原型:reduce(函数,序列[,初始])
示例:
from func tools import reduce product=reduce((lambda x,y: x * y),[1,2,3,4]) product # Output: 24 Filter:将过滤条件应用于序列并返回序列中满足条件的元素的迭代器。
原型:过滤器(函数或无,可迭代)-过滤器对象
示例:
Filter _ res=filter (lambda x: x0,range (-5,5)) filter _ res # Result:在0x 7 fdb 80562 DD 8 list(filter _ RES)# Result:[-5,-4,-3,-2,-1]函数的参数分为位置参数和关键字参数,
示例:
Def func1(x,y,z=0.1):#其中x,y是位置参数,z是关键字参数。如果要在函数外使用全局变量,应该在函数内用global关键字声明全局变量。
函数都是对象。充分利用这个特性可以简化代码。
例如:对于字符串清洗,一些脏空格,符号等。需要清洗管柱。
states=[ Alalama , Geob , BaBaBa* , West vir?]import redef clean _ string(string):result=[]for value in string:value=value . strip()value=re . sub([!#*?],,value)value=value . title()Result . append(value)return Result clean _ string(States)# Result:[ ala Lama , Geob , babababa , Westvir]如果这个过程被视为对一组字符串应用特定的操作,那么可以
states=[ Alalama , Geob , BaBaBa* , West vir?]def remove _标点符号(value): return re.sub([!*#?],,value)clean_ops=[str.strip,remove _标点,str . title]def Clean _ strings _ op(strings,ops):Result=[]for value in strings:for function in ops:value=function(value)Result . append(value)return Result Clean _ strings _ op(States,Clean_ops)# Result: [Alalama , Geob , Bababa , Westvir]当然,基于Map-Reduce的等价写法如下:
地图中的x(字符串。标题,地图(字符串。strip,map (remove _ puncture,states)): print (x)返回多个值。当函数需要返回多个值时,直接返回多个要返回的对象即可。
f():一些定义表达式.返回A,B,C匿名函数,也叫Lambda函数,是用关键字Lambda定义的。
示例:根据字符串中的不同字母对字符串进行排序。
Strings=[foo , card , bar , aaaaaa , abababa ]strings . sort(key=lambda x:len(set(list(x)))strings # Results:[ aaaaaa , foo ,[ The card] generator迭代器是一个用于在上下文中为Python解释器生成对象的对象(比如for loop)。普通函数一次执行并返回一个结果,而生成器“懒洋洋地”返回一系列多个结果,在产生每个元素后暂停,直到下一个请求。要创建生成器,只需在函数中用yeild键替换return键。
-生成器的表达式非常类似于列表、字典和集合的派生。要创建生成器表达式,只需用括号替换列表派生中的括号。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。