在mathematica中使用嵌套数组和列表

时间:2011-09-15 20:36:53

标签: wolfram-mathematica

这里有绝对的初学者问题。 我在mathematica中有两个列表。 第一个是由Table命令生成的:

Table[QP[[i]], {i, 10}] 生成列表:

{52.5, 45., 37.5, 30., 22.5, 15., 7.5, 0., -7.5, -15.}

第二个是范围

Range[0, 9, 1]

生成{0,1,2,3,4,5,6,7,8,9}

我需要将这些列入列表。即{{0,52.5},{1,45} ...}等。但我似乎无法得到它。你需要使用循环吗?因为我认为可以使用Table和Array命令生成我想要的内容。

由于

4 个答案:

答案 0 :(得分:7)

Transpose可能是你想要的:

list1 = {52.5, 45., 37.5, 30., 22.5, 15., 7.5, 0., -7.5, -15.}

list2 = Range[0, 9, 1]
Transpose[{list2, list1}]

给出

  

{{0,52.5},{1,35},{2,37.5},{3,30。},{4,22.5},{5,15},{6,     7.5},{7,0},{8,-7.5},{9,-15。}}

答案 1 :(得分:5)

Table的第一个参数可以是任何表达式。您可以通过将列表指定为第一个参数来输出列表列表:

Table[{i-1, QP[[i]]}, {i, 10}]
(* {{0, QP[[1]]}, {1, QP[[2]]}, ... {8, QP[[9]]}, {9, QP[[10]]}} *)

答案 2 :(得分:5)

Thread[List[Range[0, 9], QP[[;; 10]]]]

答案 3 :(得分:4)

要完成方法的阐述,您可以使用MapIndexed

MapIndexed[{First[#2] - 1,#1}&, data]

,其中

data = {52.5, 45., 37.5, 30., 22.5, 15., 7.5, 0., -7.5, -15.}

或者,您可以使用MapThread

MapThread[List, {Range[0,9], data}]

虽然MapIndexed更合适,因为它不需要您生成额外的列表。

我想说的最后一点是,您的代码Table[QP[[i]], {i, 10}]暗示QP本身就是一个列表。 (双括号[[ ]]将其弃去。)如果这是正确的,那么Table不是生成子集的最佳方式,您可以使用Part({{3直接与[[ ]]一起

QP[[ 1 ;; 10 ]]

QP[[ ;; 10 ]]

然后,您可以用这些表单中的任何一个替换代码的前几位中的data