python知识点汇总_Python知识点总结大全(一)
python邏輯運算符
1.成員
and or not
優(yōu)先級:() > not > and > or
2.and
邏輯運算符and,a andb,如果a和b都為True,則返回True,如果其中一個為False,返回False,簡言之:一假則假,全真則真
3.or
邏輯運算符or,a or b, 如果a和b有一個為True,則返回True,如果全為False,返回False,簡言之:一真則真,全假則假
4.not
邏輯運算符not,是結果的相反邏輯,比如 not 4>5為True
5.優(yōu)先級級別從上至下
運算符
描述
**
指數 (最高優(yōu)先級)
~ + –
按位翻轉, 一元加號和減號 (最后兩個的方法名為 +@ 和 -@)
* / % //
乘,除,取模和取整除
+ –
加法減法
>> ,<<
右移,左移運算符
&
位 ‘AND’
^|
位運算符
<= < > >=
比較運算符
<> == !=
等于運算符
= %= /= //= -= += *= **=
賦值運算符
is, is not
身份運算符
in, not in
成員運算符
Not , and, or
邏輯運算符
python 中else在while循環(huán)中的用法
else 可以在while和for循環(huán)中運用,else和while或for搭配使用,不再是條件判斷的含義。而是當while條件不成立時,直接跳出while循環(huán),執(zhí)行else輸出如:
count = 0
while count > 12:
if True:
print('Yes')
break
count += 1
else:
print('No')
# 輸出
No
a = 0
while a < 6:
print('loop',a)
a = a + 1
else:
print('well done!')#沒有break的情況下,循環(huán)沒有被打斷
# 輸出
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
well done!
a = 0
while a < 6:
print('loop', a)
a += 1
break # 有break的情況下,執(zhí)行一次循環(huán)中止了,這種情況下不是正常中止的,else代碼塊是不執(zhí)行的
else:
print('Well done!')
# 輸出
loop 0
總結:else下的代碼塊在while循環(huán)正常執(zhí)行結束了之后就會執(zhí)行else代碼塊。否則,不執(zhí)行。
匿名函數
為了解決那些功能很簡單的需求而設計的一句話函數
語法:lambda 參數列表 : 表達式
說明:使用lambda關鍵字創(chuàng)建匿名函數。所謂匿名函數,就是沒有名字的函數。匿名函數冒號后面的表達式有且只能有一個,注意:是表達式,而不是語句。匿名函數自帶return,而return的結果就是表達式的計算后的結果。
通過對比匿名函數和普通函數來說明下lambda的用法
1.無參匿名函數:
>>>t = lambda : True #分號前無任何參數
>>>t()
True
# 等價于
>>> def func(): return True
>>> func()
True
2.帶參數匿名函數
>>> lambda x: x**3 #一個參數
>>> lambda x,y,z:x+y+z #多個參數
>>> lambda x,y=3: x*y #允許參數存在默認值
# 匿名函數調用
>>> c = lambda x,y,z: x*y*z
>>> c(2,3,4)
24
>>> c = lambda x,y=2: x+y #使用了默認值
>>> c(10) #不輸的話,使用默認值2
12
>>> a = lambda *z:z # *z返回的是一個元祖,即返回的是和參數一樣的類型
>>> a('Testing1','Testing2')
('Testing1', 'Testing2')
3.直接后面?zhèn)鬟f實參
>>> (lambda x,y: x if x> y else y)(101,102)
102
>>> (lambda x:x**2)(3)
9
# lambda返回的值,結合map,filter,reduce使用
>>> filter(lambda x:x%3==0,[1,2,3,4,5,6])
[3, 6]
# 等價于下面的列表推導式
>>> l = [x for x in [1,2,3,4,5,6] if x%3==0]
>>> l
[3, 6]
4.嵌套使用
# lambda嵌套到普通函數中,lambda函數本身做為return的值
>>> def increment(n):
return lambda x: x+n
>>> f=increment(4)
>>> f(2)
6
>>> def say():
title = 'Sir,'
action= lambda x: title + x
return action
>>> act = say()
>>> act('Smith!')
'Sir,Smith!'
5.大量例子
# 例01:字符串聯合,有默認值,也可以x=(lambda...)這種格式
>>> x = (lambda x="Boo",y="Too",z="Zoo": x+y+z)
>>> x("Foo")
'FooTooZoo'
# 例02: 和列表聯合使用
>>> L = [lambda x:x**2,\
lambda x:x**3,\
lambda x:x**4]
>>> for f in L:
... print f(2)
...
4
8
16
# 也可以如下面這樣調用
>>> print L[0](3)
9
# 例03: 和字典結合使用
>>> key = 'B'
>>> dic = { 'A': lambda: 2*2,\
... 'B': lambda: 2*4,\
... 'C': lambda: 2*8}
>>> dic[key]()
8
# 例04: 求最小值
>>> lower = lambda x,y: x if x
>>> lower('aa','ab')
'aa'
# 例05: 和map及l(fā)ist聯合使用
>>> import sys
>>> showall = lambda x:list(map(sys.stdout.write,x))
>>> showall(['Jerry\n','Sherry\n','Alice\n'])
Jerry
Sherry
Alice
>>> showall(['Jerry','Sherry','Alice'])
JerrySherryAlice
#等價于下面
>>> showall = lambda x: [sys.stdout.write(line) for line in x]
>>> showall(('I\t','Love\t','You!'))
I Love You![None, None, None]
# 例06: 在Tkinter中定義內聯的callback函數
import sys
from Tkinter import Button,mainloop
x = Button(text='Press me',
command=(lambda:sys.stdout.write('Hello,World\n')))
x.pack()
x.mainloop()
>>>
Hello,World!
Hello,World!
# 例07: lambda和map聯合使用,
>>> out = lambda *x: sys.stdout.write(' '.join(map(str,x)))
>>> out('This','is','a','book!\n')
This is a book!
# 例08: 判斷字符串是否以某個字母開頭
>>> print (lambda x: x.startswith('B'))('Bob')
True
>>> Names = ['Anne', 'Amy', 'Bob', 'David', 'Carrie', 'Barbara', 'Zach']
>>> B_Name= filter(lambda x: x.startswith('B'),Names)
>>> B_Name
['Bob', 'Barbara']
# 例09: lambda和map聯合使用
>>> squares = map(lambda x:x**2,range(5))
>>> squares
[0, 1, 4, 9, 16]
# 例10. lambda和map,filter聯合使用
>>> squares = map(lambda x:x**2,range(10))
>>> filters = filter(lambda x:x>5 and x<50,squares)
>>> filters
[9, 16, 25, 36, 49]
# 例11. lambda和sorted聯合使用
# 按death名單里面,按年齡來排序
# 匿名函數的值返回給key,進來排序
>>> death = [ ('James',32),
('Alies',20),
('Wendy',25)]
>>> sorted(death,key=lambda age:age[1]) #按照第二個元素,索引為1排序
[('Alies', 20), ('Wendy', 25), ('James', 32)]
# 例12. lambda和reduce聯合使用
>>> L = [1,2,3,4]
>>> sum = reduce(lambda x,y:x+y,L)
>>> sum
10
# 例13. 求2-50之間的素數
#素數:只能被1或被自己整除的數
>>> nums = range(2,50)
>>> for i in nums:
nums = filter(lambda x:x==i or x % i,nums)
>>> nums
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
# 例14. 求兩個列表元素的和
>>> a = [1,2,3,4]
>>> b = [5,6,7,8]
>>> map(lambda x,y:x+y, a,b)
[6, 8, 10, 12]
#例15. 求字符串每個單詞的長度
>>> sentence = "Welcome To Beijing!"
>>> words = sentence.split()
>>> lengths = map(lambda x:len(x),words)
>>> lengths
[7, 2, 8]
# 寫成一行:
>>> print map(lambda x:len(x),'Welcome To Beijing!'.split())
函數名的應用、閉包
函數名可以作為一個變量,函數的參數,函數的返回值,容器類類型的元素
1.作為一個變量
def func1():
print(666)
f1 = func1 # 這里函數名實際上是個變量,只是變量名改了而已
f2 = f1
>>>
f2()
666
2.作為函數的參數
def func2(x):
print(x)
print('===', x())
print(func2(func1)) # 把func1的地址作為func2的參數,再執(zhí)行func2函數。
>>>
666
=== None
None
3.函數名作為返回值
def wraaper():
def inner():
print('inner ')
return inner
ret = wraaper()
ret()
>>>
inner
'''
此時執(zhí)行了inner()函數,為什么執(zhí)行外部函數可以執(zhí)行內嵌的函數呢,因為return了函數名,實際上形成了閉包。
4.閉包
當return一個嵌入的函數名時,在全局命名空間就可以直接找到該函數的地址,也就是可以執(zhí)行函數,原理是在全局變量空間外層的函數的內存地址指向了嵌入的函數的內存地址。通常要執(zhí)行內層的函數時必須執(zhí)行外層的函數才可以執(zhí)行內嵌的函數,當外層函數return了內嵌的函數名,實際上把內嵌的函數地址放在外面了,就是告訴所有外部人,這就是我的地址,通過這個地址你們就可以找到我。
enumerate() 枚舉函數
enumerate(iterable, start =0)
返回一個枚舉對象,第一個參數必須是一個序列,一個迭代器,或者其他支持迭代的對象。用enumetate()利用iterator中next()的方法返回一個包含計數(默認從0)開始的以及從迭代中獲得的值元組。
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>>print(tuple(enumerate(seasons)))
>>>print(list(enumerate(seasons, start=4))) # 從4開始數
((0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter'))
[(4, 'Spring'), (5, 'Summer'), (6, 'Fall'), (7, 'Winter')]
總結
以上是生活随笔為你收集整理的python知识点汇总_Python知识点总结大全(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果手机怎么投屏的?
- 下一篇: python怎样编写定时程序_Pytho