[英]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.