虽然我同意@blacksite的说法列表理解并不是最容易理解的方式,但如果这是你的目标,那么这里是如何做到的:
cluster.append(
[x[0] for x in [[item[1] for item in Interest if term[0] == item[0]]
for cluster in ClusterFile for term in cluster[2]]
if len(x)]
)
cluster
# [['a'],'qx19']]
数据:
cluster = [['a'],6]]
ClusterFile = [cluster]
Interest = [['w','qx19']]
几点说明:
>嵌套列表推导与嵌套for循环的顺序相同.所以如果你有:
for a in b:
for x in a:
f(x)
那么这看起来像:
[f(x) for a in b for x in a]
这看起来有点倒退,因为a中的x远离声明使用x的前面.只需将其视为嵌套for循环的顺序即可. (你在原始代码中倒退了.)
>你想要集群[2],而不是集群[3].
>在群集[2]中选择单个元素时,例如[‘w’],[‘x’]等,您正在比较列表元素([‘w’]),由term表示该列表中包含的字符串(‘w’),由item [0表示].这不匹配,你需要使用term [0].
>附加的最终列表(x [0] s列表)会删除一些在内部列表理解中创建的空列表.这不是很漂亮,可能有更好的方法.但同样,在我看来,如果没有列表理解,这整个方法会更具可读性.
本文探讨了使用列表理解进行数据处理的方法,特别是针对嵌套列表的理解和操作,并提供了具体的代码示例来解释如何正确地使用列表理解。
550

被折叠的 条评论
为什么被折叠?



