代码之家  ›  专栏  ›  技术社区  ›  Gloom

如何分配给列表中的函数调用

  •  5
  • Gloom  · 技术社区  · 6 年前

    我试图优化一些代码来处理列表列表,我注意到,当我试图在列表中指定一个列表时,我总是在语法或输出方面遇到错误。

    我的代码在下面

    out = []
    for cluster in ClusterFile:
        cluster = list(cluster)
        for term in cluster[3]:
            for item in Interest:
                if term == item[0]:
                    x = [item[1]]
                    cluster.append(x)
                    break
            out.append(cluster)
            break
    

    out = [([item[1]]) for item in Interest for term in cluster[3] if term ==item[0] for cluster in ClusterFile]
    

    输入示例:

    cluster = [['a'], [1, 2], [3, 4], [['w'], ['x'], ['y'], ['z']], [5, 6]]
    
    Interest = [['w', 'qx12'], ['y', 'qx19']]
    

    输出示例:

    [['a'], [1, 2], [3, 4], [['w'], ['x'], ['y'], ['z']], [5, 6], ['qx12', 'qx19']]
    

    有人知道有什么资源可以帮我解决这个问题吗?我正在用python3编写代码

    1 回复  |  直到 6 年前
        1
  •  3
  •   andrew_reece    6 年前

    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'], [1, 2], [['w'], ['x'], ['y'], ['z']], [5, 6], ['qx12', 'qx19']]
    

    数据:

    cluster = [['a'], [1, 2], [['w'], ['x'], ['y'], ['z']], [5, 6]]
    ClusterFile = [cluster]
    Interest = [['w', 'qx12'], ['y', 'qx19']]
    

    • for a in b:
          for x in a:
              f(x)
      

      [f(x) for a in b for x in a]
      

      这似乎有点倒退,因为 x in a 离前面很远的语句在哪里 x 习惯了。把它想象成嵌套for循环的顺序(在原始代码中是反向的。)

    • 你想要什么 cluster[2] ,不是 cluster[3]

    • 在中选择单个图元时 簇[2] ['w'] , ['x'] 列表 元素( [“w”] term 反对 一串 包含在那个列表中( 'w' item[0] . 不匹配,你需要 term[0] 相反。
    • 附加的最终列表( x[0]