繁体   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