[英]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']
解釋(您的代碼):
迭代字符串,如果字母什么都沒有,例如空格等...,則將其設為逗號。
所有使用后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.