簡體   English   中英

特定列表理解

[英]Particular List Comprehension

任何人都可以解釋如何理解這個特定的列表理解。

我嘗試使用如何朗讀 Python 列表理解來解碼以下列表理解? ,但還是看不懂。

words  = "".join([",",c][int(c.isalnum())] for c in sen).split(",")

讓我們說:

sen='i love dogs'

所以輸出將是,

['i', 'love', 'dogs']

這是split的更好方法:

print(sen.split())

輸出:

['i', 'love', 'dogs']

解釋(您的代碼):

  1. 迭代字符串,如果字母什么都沒有,例如空格等...,則將其設為逗號。

  2. 所有使用后split分裂逗號出來。

基本上,你有這個:

對於sentence ( sen ) 中的每個character ( c ),創建一個列表[',', character]

如果character是字母或數字( .isalnum() ),則將該字符添加到.isalnum()構建的列表中。 更確切地說:

`[',', character][1]`.

如果不是,請使用逗號 (","),並將其添加到理解構建的列表中。 更確切地說:

`[',', character][0]`

現在,將列表連接成一個字符串:

`"".join(['I', ',', 'l', 'o', 'v', 'e', ',', 'd', 'o', 'g', 's', ','])`

變成

`"I,love,dogs,"`

現在並使用逗號將該字符串拆分為一個列表:

"I,love,dogs,".split(",")

變成

`['I', 'love', 'dogs', '']`

這里的技巧是[",",c][int(c.isalnum())]實際上是一個切片,使用isalnum()的真值,轉換為 int,作為零索引或一切片的索引。

因此,基本上,如果c是字符“b”,例如,您有 [',', character][1]。

希望這可以幫助。

PS 在我的示例中,我使用的是“sen = '我愛狗”。 你能發現你的結果和我的結果之間的差異,並理解為什么會發生這種情況嗎?

這是代碼:

sen = 'I love dogs.'
words  = "".join([",",character][int(character.isalnum())] for character in sentence).split(",")
print(words)

結果:

['I', 'love', 'dogs', '']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM