pythonxforxin
1. python for 語句的使用方法
Python 中的 for 語句和 C 或 Pascal 中的略有不同。通常的循環可能會依據一個等差數值步進過程(如 Pascal),或由用戶來定義迭代步驟和中止條件(如 C ),Python 的 for 語句依據任意序列(鏈表或字元串)中的子項,按它們在序列中的順序來進行迭代。例如(沒有暗指):
>>> # Measure some strings:
... words = ['cat', 'window', 'defenestrate']
>>> for w in words:
... print(w, len(w))
...
cat 3
window 6
defenestrate 12
在迭代過程中修改迭代序列不安全(只有在使用鏈表這樣的可變序列時才會有這樣的情況)。如果你想要修改你迭代的序列(例如,復制選擇項),你可以迭代它的復本。使用切割標識就可以很方便的做到這一點:
2. python _ x for x in x
鏈表推導式
鏈表推導式提供了一個創建鏈表的簡單途徑,無需使用 map(), filter() 以及 lambda。返回鏈表的定義通常要比創建這些鏈表更清晰。每一個鏈表推導式包括在一個for語句之後的表達式,零或多個for或if語句。返回值是由for或if子句之後的表達式得到的元素組成的鏈表。如果想要得到一個元組,必須要加上括弧。
>>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']
>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]
>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]
[]
>>> [[x,x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]
>>> [x, x**2 for x in vec] # error - parens required for tuples
File "<stdin>", line 1, in ?
[x, x**2 for x in vec]
^
SyntaxError: invalid syntax
>>> [(x, x**2) for x in vec]
[(2, 4), (4, 16), (6, 36)]
>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]
為使鏈表推導式匹配for循環的行為,可以在推導之外保留循環變數:
>>> x = 100 # this gets overwritten
>>> [x**3 for x in range(5)]
[0, 1, 8, 27, 64]
>>> x # the final value for range(5)
摘自
Python handbook
Guido van Rossum
Fred L. Drake, Jr., editor
3. Python列表推導式{x for x in range(10) if x % 2 != 0}
它就是循環的簡寫。只是書寫的差異,效果是一樣的,圖中的兩種寫法效果是一樣的
4. python中for循環與else,while循環與else
for 變數 in 序列:
循環體else:
語句塊
執行過程:
先執行for循環,循環正常結束則執行else下面的語句塊,
否則不執行
for xin range(100):
if x ==50:
pass
print(x)
else:
print("正常執行結束")
print("over")
while 判斷條件:
循環體else:
語句塊
執行過程:循環正常結束之後[未使用break跳出循環],會執行else語句
若是非正常執行結束,則跳過else語句
i =0
while i <=100:
i +=1
if i ==50:
# break
# continue
pass
print(i)
else:
print("over")
在python中,與if分支語句不同的是,for循環與while循環正常執行完畢後,才會執行else語句。否則不執行。
5. python關於for循環的幾個函數
range
6. python中的for in的相關問題
A.因為已經引入了sqrt函數,如果在自己的空間中執行 sqrt=1 '把sqrt當成了一個變數,再運行sqrt(4)會出錯
例子中 exec運行代碼 在Scope空間中 sqrt是個變數,賦值1,如果沒有in scope,那麼exce運行空間就是本空間,再次sqrt(4)就會出錯。
對比:
a=1234
exec 'a=4321'
a
4321
和代碼:
a=1234
b={}
exec 'a=4321' in b
a
1234
B:print [x*x for x in range(10) if x % 3 == 0]
這里range(10)產生0,1,2~8,9 這10個數字
後面添加了條件x % 3 ==0,就是判斷 x除以3的余數 等於0, 篩選出0、3、6、9
傳遞給x*x,就產生了一個列表:[0,9,36,81]