Python 如果满足指定条件,则返回内部列表-列表理解

Python 如果满足指定条件,则返回内部列表-列表理解,python,Python,假定clusterLists是包含元组的列表列表 clusterLists = [[(1.182, "monthly_1.182"), (1.181, '1_Retrace_50_D')], [(1.1502, '1_Retrace_50_D'), (1.1493, '1_Retrace_50_M')]] len(clusterLists) 2 目前,如果找到列表['daily'、'weekly'、'monthly']中的字符串,以下列表理解将返回列表列表: [[ld

假定
clusterLists
是包含元组的列表列表

clusterLists = [[(1.182, "monthly_1.182"), (1.181, '1_Retrace_50_D')], [(1.1502, '1_Retrace_50_D'), (1.1493, '1_Retrace_50_M')]]


len(clusterLists)
2
目前,如果找到列表
['daily'、'weekly'、'monthly']
中的字符串,以下列表理解将返回列表列表:

[[ld for ld in cList
  if any(k in ld[1] for k in ['daily','weekly','monthly'])] for cList in clusterLists]
如何修改此项以返回原始格式(包含元组的列表列表)并具有以下所需输出

[[(1.182, 'monthly_1.182'), (1.181, '1_Retrace_50_D')]]

应保留原始格式。如果内部列表包含元组中的搜索字符串,则返回来自内部列表元素的所有元组。

您可以使用以下一行解决方案:

fl=[集群中集群的集群列表(如果有)([集群中集群元素的关键字[1]集群中集群元素的关键字['daily','weekly','monthly']])]

但是,我建议使用更具可读性的解决方案,将其分为几行:

FREQUENCIES=[“每日”、“每周”、“每月”]
过滤的_集群=[]
对于ClusterList中的群集:
对于集群中的集群_元素:
如果有([freq in cluster_element[1]表示freq in FREQUENCIES]):
已筛选的\u群集。追加(群集)
打破

您可以使用以下一行解决方案:

fl=[集群中集群的集群列表(如果有)([集群中集群元素的关键字[1]集群中集群元素的关键字['daily','weekly','monthly']])]

但是,我建议使用更具可读性的解决方案,将其分为几行:

FREQUENCIES=[“每日”、“每周”、“每月”]
过滤的_集群=[]
对于ClusterList中的群集:
对于集群中的集群_元素:
如果有([freq in cluster_element[1]表示freq in FREQUENCIES]):
已筛选的\u群集。追加(群集)
打破

您的意思是:
[[ld代表cList中的ld…
?是的,谢谢修改问题您的意思是:
[[ld代表cList中的ld…
?是的,谢谢修改问题“通过拆分使用更可读的解决方案”-你能发表这样的文章,让其他人更容易理解你的代码吗?哟,刚刚更新了这篇文章。你的第二个代码片段不是等价的。你可以多次附加
cluster
。也许你可以添加一个
break
作为最后一行。哎呀,你肯定是对的,只是编辑了它“通过拆分来使用更具可读性的解决方案“-你能发表这样的文章,让其他人更容易理解你的代码吗?哟,刚刚更新了这篇文章。你的第二个代码片段不是等价的。你可以多次附加
cluster
。也许你可以添加一个
break
作为最后一行。哎,你肯定是对的,只是编辑了它。”