python支持double吗_python列表理解为double
讓我們打破它
一個簡單的列表理解:
[x for x in collection]
這很容易理解,如果我們把它分成幾部分:
> A是將在結果列表中的項目
> B是集合C中的每個項目
> C是集合本身。
這樣可以寫:
[x.lower() for x in words]
為了將列表中的所有單詞轉(zhuǎn)換為小寫。
這是當我們使這樣的另一個列表復雜化如此:
[x for y in collection for x in y] # [A for B in C for D in E]
這里有一些特別的事情。我們希望我們的最終列表包含A個項目,并且A項目在B項目中找到,因此我們必須告訴列表的理解。
> A是將在結果列表中的項目
> B是集合C中的每個項目
> C是集合本身
> D是集合E中的每個項目(在這種情況下,也是A)
> E是另一個集合(在這種情況下,B)
這個邏輯類似于正常的for循環(huán):
for y in collection: # for B in C:
for x in y: # for D in E: (in this case: for A in B)
# receive x # # receive A
為了擴大這個,給出一個很好的例子說明,想象有一列火車。
列車引擎(前線)總是在那里(列表理解的結果)
那么,有幾輛火車,每輛火車都是以x為單位的
列表理解可能如下所示:
[z for b in a for c in b for d in c ... for z in y]
這將是像這樣常規(guī)的循環(huán):
for b in a:
for c in b:
for d in c:
...
for z in y:
# have z
換句話說,而不是沿著一行和縮進,在一個列表的理解,你只需添加下一個循環(huán)到最后。
回到火車類比:
發(fā)動機 – 汽車 – 汽車 – 尾巴
什么是尾巴?尾巴是列表理解中的特殊事物。你不需要一個,但是如果你有一個尾巴,尾部是一個條件,看這個例子:
[line for line in file if not line.startswith('#')]
只要該行不是以一個標題(#)開始,那么這只會讓你在文件中的每一行,而其他的只是被跳過。
使用火車“尾巴”的訣竅在于,它與所有循環(huán)中的最終“引擎”或“結果”同時檢查是真/假,上述示例在常規(guī)循環(huán)中將如下所示:
for line in file:
if not line.startswith('#'):
# have line
請注意:雖然在火車類比中,火車尾部只有一個“尾巴”,但是每個“汽車”或“循環(huán)”之后,條件或“尾巴”
例如:
>>> z = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> [x for y in z if sum(y)>10 for x in y if x < 10]
[5, 6, 7, 8, 9]
在常規(guī)循環(huán)中:
>>> for y in z:
if sum(y)>10:
for x in y:
if x < 10:
print x
5
6
7
8
9
總結
以上是生活随笔為你收集整理的python支持double吗_python列表理解为double的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瓷砖上边刷粘合剂在刷涂料可以吗?
- 下一篇: 声母、韵母各有多少个?