python支持double吗_python列表理解为double
讓我們打破它
一個(gè)簡(jiǎn)單的列表理解:
[x for x in collection]
這很容易理解,如果我們把它分成幾部分:
> A是將在結(jié)果列表中的項(xiàng)目
> B是集合C中的每個(gè)項(xiàng)目
> C是集合本身。
這樣可以寫(xiě):
[x.lower() for x in words]
為了將列表中的所有單詞轉(zhuǎn)換為小寫(xiě)。
這是當(dāng)我們使這樣的另一個(gè)列表復(fù)雜化如此:
[x for y in collection for x in y] # [A for B in C for D in E]
這里有一些特別的事情。我們希望我們的最終列表包含A個(gè)項(xiàng)目,并且A項(xiàng)目在B項(xiàng)目中找到,因此我們必須告訴列表的理解。
> A是將在結(jié)果列表中的項(xiàng)目
> B是集合C中的每個(gè)項(xiàng)目
> C是集合本身
> D是集合E中的每個(gè)項(xiàng)目(在這種情況下,也是A)
> E是另一個(gè)集合(在這種情況下,B)
這個(gè)邏輯類(lèi)似于正常的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
為了擴(kuò)大這個(gè),給出一個(gè)很好的例子說(shuō)明,想象有一列火車(chē)。
列車(chē)引擎(前線)總是在那里(列表理解的結(jié)果)
那么,有幾輛火車(chē),每輛火車(chē)都是以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
換句話說(shuō),而不是沿著一行和縮進(jìn),在一個(gè)列表的理解,你只需添加下一個(gè)循環(huán)到最后。
回到火車(chē)類(lèi)比:
發(fā)動(dòng)機(jī) – 汽車(chē) – 汽車(chē) – 尾巴
什么是尾巴?尾巴是列表理解中的特殊事物。你不需要一個(gè),但是如果你有一個(gè)尾巴,尾部是一個(gè)條件,看這個(gè)例子:
[line for line in file if not line.startswith('#')]
只要該行不是以一個(gè)標(biāo)題(#)開(kāi)始,那么這只會(huì)讓你在文件中的每一行,而其他的只是被跳過(guò)。
使用火車(chē)“尾巴”的訣竅在于,它與所有循環(huán)中的最終“引擎”或“結(jié)果”同時(shí)檢查是真/假,上述示例在常規(guī)循環(huán)中將如下所示:
for line in file:
if not line.startswith('#'):
# have line
請(qǐng)注意:雖然在火車(chē)類(lèi)比中,火車(chē)尾部只有一個(gè)“尾巴”,但是每個(gè)“汽車(chē)”或“循環(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
總結(jié)
以上是生活随笔為你收集整理的python支持double吗_python列表理解为double的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 瓷砖上边刷粘合剂在刷涂料可以吗?
- 下一篇: python socket发送数组_利用