python学习笔记(四)、条件、循环及其他语句
1 再談print和import
1.1 打印多個(gè)參數(shù)
print 能夠同時(shí)打印多個(gè)表達(dá)式,并且能自定義分隔符。如下:
print('a','b','c') ——> a b c
print('a','b','c',sep="_") ——> a_b_c
1.2 import
導(dǎo)入模塊時(shí),能夠給導(dǎo)入的模塊取一個(gè)別名(相對于生活中的小名,不管怎么叫,還是你而已),方法是在語句末尾添加?as 子句并指定別名。
import math as foobar
from pi import math as PI
2 賦值
即便是不起眼的賦值語句也蘊(yùn)含著一些敲門。
2.1 序列解包
python 能夠同時(shí)(并行)給多個(gè)變量賦值。如 x,y,z = 1,2,3? ? ? ? ? x,y = y,x 。這樣的操作我們稱之為序列解包(或可迭代對象解包):將一個(gè)序列(任何可迭代對象)解包,并將得到的值存儲到一系列變量中。值得注意的是,要解包的序列包含的元素個(gè)數(shù)必須與你在等號左邊列出的目標(biāo)個(gè)數(shù)相同,否則python將引發(fā)異常。
如果你想要收集要解包的序列包含的元素多余值,可以使用星號運(yùn)算符(?*?)來收集,這樣無需確保值和變量的個(gè)數(shù)相同。如:
a, *b , c = (1, 2, 3, 4) ——> b = [2, 3]
2.2 鏈?zhǔn)劫x值
將多個(gè)變量關(guān)聯(lián)到同一個(gè)值。如:x = y = fn1()
2.3 增強(qiáng)賦值
可以不編寫代碼x = x + 1,而將右邊表達(dá)式中的運(yùn)算符移到賦值運(yùn)算符( = )的前面,從而寫成 x += 1。這稱為增強(qiáng)賦值。適用于所有標(biāo)準(zhǔn)運(yùn)算符,如+、-、* 、%等。
3 代碼塊
代碼塊是一組語句,可在滿足條件時(shí)執(zhí)行(if語句),可執(zhí)行多次(循環(huán)),等等。代碼塊是通過縮進(jìn)代碼(即在前面加空格)來創(chuàng)建的。如:
while True:
? ? ....
? ? ....
4 條件和條件語句
4.1 這正是布爾值得用武之地
用作布爾表達(dá)式時(shí),下面的都將被解釋器視為假:
False None 0 "" () '' [] {}
換而言之,標(biāo)準(zhǔn)值False和None、各種類型的數(shù)值0、空序列以及空映射都被視為假,其他各種值都被視為真。
布爾值True和False屬于類型bool,與list、str、tuple和dict一樣,都可以用來轉(zhuǎn)換其他值。如bool("aa") ——> True
4.2 if...else / if...elif...elif...else語句
if 語句能夠讓你有條件的執(zhí)行代碼。并且if 條件語句中能夠通過代碼塊嵌套if語句。
4.3 更復(fù)雜的條件
4.3.1 比較運(yùn)算符
常見的比較運(yùn)算符有==、<、> 、!= 等,python中還可以用is、in來比較對象。
x is y x和y是同一個(gè)對象時(shí)返回True
x is not y x和y不是同一個(gè)對象時(shí)返回True
x in y x是容器(如序列)y的成員時(shí)返回True
x not in y x不是容器(如序列)y的成員時(shí)返回True
還能夠進(jìn)行鏈?zhǔn)綐?biāo)記,如 1 <= number < 20。
4.3.2 布爾運(yùn)算符
and 、or 和 not。and表示同時(shí)滿足兩個(gè)條件才為True; or表示只有有一個(gè)條件滿足就為True,否則為False; not表示相反。布爾運(yùn)算符有個(gè)有趣的特征:只做必要的技術(shù),也就是常說的短路,即短路邏輯(或延遲求值)。
4.4 斷言
關(guān)鍵字 assert ,當(dāng)條件滿足時(shí)執(zhí)行,不滿足時(shí)程序異常退出,一般用于程序中的檢查點(diǎn)。
5 循環(huán)
使程序多次執(zhí)行。
5.1 while循環(huán)
while 條件:
......
當(dāng)滿足條件的時(shí)候,執(zhí)行程序塊。
5.2 for 循環(huán)
for a1 in list1:
......
對可迭代的對象(如序列)進(jìn)行遍歷。
5.3 迭代字典
for key in dict1:
dict1[key]......
5.4 一些迭代工具
5.4.1 并行迭代
有時(shí)候你可能想同時(shí)迭代兩個(gè)序列,python提供了一個(gè)內(nèi)置函數(shù)?zip ,它將兩個(gè)序列 “縫合” 起來,并返回一個(gè)由元祖組成的序列。如:
list(zip(names,ages)) ——> [(name1,age1),(name2,age2).....]
值得注意的是,zip 比不需要兩個(gè)序列的長度len相等,zip只取兩個(gè)序列長度的最小值,即ziplen = min((len(names),len(ages)))。
5.4.2 迭代時(shí)獲取索引
python 提供了一個(gè)內(nèi)置函數(shù)enumerate。能夠在迭代的時(shí)候獲取到序列項(xiàng)的索引值。如:
for index,ages in enumarate(ages):
.......
enumerate函數(shù)相當(dāng)于把序列轉(zhuǎn)為一個(gè)dict字典類型。key為index,value為序列對應(yīng)的值。
5.4.3 方向迭代和排序后再迭代
使用函數(shù):reversed和sorted。
5.5 跳出循環(huán)
在編碼過程中,有時(shí)候只要當(dāng)滿足一定條件才能執(zhí)行循環(huán)、跳出循環(huán)等。
5.5.1 break
跳出當(dāng)前循環(huán)。并且能夠在循環(huán)中添加一條else子句,它表示在沒有調(diào)用break 時(shí)才執(zhí)行。如:
for age in ages:
if age > 10 :
break
else:
print("ages中年齡全部都小于等于10")
5.5.2 continue
表示結(jié)束當(dāng)前迭代,并跳到下一次迭代開頭。即意味著跳過循環(huán)體重余下的語句,但不結(jié)束循環(huán)。
6 簡單推導(dǎo)
列表推導(dǎo)是一種從其他列表創(chuàng)建列表的方式,類似于數(shù)學(xué)中的集合推導(dǎo)。如:
[x * x for x in range(10)] 表示0~9 的平方列表。
[x * x for x in range(10) if x%2 == 0] 表示0~9中能夠被整除2的數(shù)的平方列表
[(x,y) for x in range(10) for y in range(10)] 等效于兩個(gè)for循環(huán),表示x從0~9、y從0~9的笛卡爾積。
7 pass、del、exec、eval
7.1 pass
由于python中代碼塊不能為空,通常用pass 占位符來表示,代表什么都不用做。
7.2 del
對于你不再使用的對象,python通常對將其刪除。del obj? 不僅會刪除到對象的引用,還會刪除名稱本事。
7.3 exec
函數(shù)exec將字符串作為代碼執(zhí)行。
7.4 eval
函數(shù)eval將字符串作為表達(dá)式執(zhí)行并返回結(jié)果。?
?
轉(zhuǎn)載于:https://www.cnblogs.com/www-123456/p/10458514.html
總結(jié)
以上是生活随笔為你收集整理的python学习笔记(四)、条件、循环及其他语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java架构:持续交付】一篇文章搞掂:
- 下一篇: python的一些基本概念知识和面试题