【问题标题】:pair lists to create tuples in order对列表按顺序创建元组
【发布时间】:2011-07-19 06:08:53
【问题描述】:

我想合并两个列表。如果我有以下两个列表:{a,b,c,d}{1,2,3,4} 我需要做什么才能获得{{a,1}, {b,2}, {c,3}, {d,4}}

【问题讨论】:

    标签: list wolfram-mathematica tuples


    【解决方案1】:

    如果 a、b、c、d 本身也是列表,请使用以下内容:

    MapThread[Flatten[{#1[[All]],#2}]&,{l1,l2}]//TableForm

    【讨论】:

      【解决方案2】:

      这是一个很好的问题。我一直认为有一种默认的方法可以用 Table 来做到这一点,但事实并非如此。下面的答案相当直观,可以很容易地推广到其他类似情况。

      l1 = {a,b,c,d};
      l2 = {1,2,3,4};
      pairs = Table[{l1[[i]], l2[[i]]}, {i, 1, Length[l1]}]
      

      MapThread 也做这种事情。这不如 Howard 的 MapThread 解决方案优雅,但在某种意义上也更具可读性。查看 MapThread 文档。函数是内联定义的(纯函数):

      pairs = MapThread[{#1, #2} &, {l1, l2}]
      

      【讨论】:

        【解决方案3】:
        listA={a,b,c,d};
        listB=[1,2,3,4};
        table=Transpose@{# & @@@ listA, # & @@@ listB}
        

        【讨论】:

          【解决方案4】:

          如果您有包含矩阵列的列表:

          l = Table[Subscript[g, Sequence[j, i]], {i, 5}, {j, 5}]
          

          转置会给你行:

          Transpose@l // MatrixForm
          

          【讨论】:

            【解决方案5】:

            一个深奥的方法是 Flatten,它(来自 Flatten 的帮助部分)还允许对“不规则”数组进行转置。

            Flatten[ {{a, b, c, d}, {1, 2, 3, 4, 5}}, {{2}, {1}}]
            

            输出[6]= {{a, 1}, {b, 2}, {c, 3}, {d, 4}, {5}}

            【讨论】:

            • @rcollyer 是的,我编写了自己的函数来做到这一点,但后来发现它一直都在那里。
            • Thread[List[{a, b, c, d}, {1, 2, 3, 4}]] 未被提及
            • 我使用transpose 选项保留我的答案,因为这正是我想要的。然而,这是一个更通用的解决方案,显然可以获得 +1
            • +1 相同。从来不知道这是添加到Flatten。是我还是描述(Flatten[list,{{s11,s12,...},{s21,s22,...},...}] flattens list by combining all levels sij to make each level i in the result.)非常难以理解?在开始理解之前,我花了几分钟的时间凝视。
            • @TomD Partition[Riffle[{a, b, c, d}, {1, 2, 3, 4}],2] 也没有被提及 ;-)
            【解决方案6】:

            这是一种方法:

            Transpose[{{a, b, c, d}, {1, 2, 3, 4}}]
            

            【讨论】:

              【解决方案7】:

              一种可能的解决方案是

              MapThread[List,{{a,b,c,d},{1,2,3,4}}]
              

              【讨论】:

              猜你喜欢
              • 2015-10-26
              • 2018-10-24
              • 2017-05-04
              • 1970-01-01
              • 2022-06-24
              • 2022-12-18
              • 2011-05-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多