【问题标题】:Assigning list elements to variables将列表元素分配给变量
【发布时间】:2012-01-05 01:18:00
【问题描述】:

Mathematica 的以下操作FactorInteger[28851680048402838857] 的输出如下:

{{3897424303, 1}, {7402755719, 1}}

我的问题是:我怎样才能提取两个素数(没有指数)并将它们分配给任意变量?

我基本上想检索两个素数,无论它们是什么,并为它们分配一些变量。

例如:x0 = 3897424303x1 = 7402755719

谢谢!

【问题讨论】:

    标签: list wolfram-mathematica variable-assignment


    【解决方案1】:

    输出是一个列表,您可以使用list manipulating functionsPart ([[ ]]) 一样选择您想要的部分,例如,

    {x0, x1} = FactorInteger[28851680048402838857][[All, 1]]
    

    或者,没有Part

    {{x0,dummy}, {x1,dummy}} = FactorInteger[28851680048402838857];
    

    【讨论】:

    • First /@ FactorInteger[28851680048402838857] 是另一种选择
    • @Michael 这没什么,真的。
    【解决方案2】:

    您的问题中隐含的是处理表达式的一部分的问题,该表达式作为FactorInteger 等函数的输出返回。请允许我提出替代方案。

    1。将所有值保存在 {list} 中,并使用 Part 访问每个元素:

    x = First /@ FactorInteger[7813426]
    
    {2, 31, 126023}
    x[[1]]
    x[[3]]
    
    2
    126023

    2。将因子存储为 函数 x 的值,模拟数组的索引:

    (此代码使用MapIndexedFunction。)

    Clear[x]
    
    MapIndexed[
      (x[First@#2] = First@#1) &,
      FactorInteger[7813426]
    ];
    
    x[1]
    x[3]
    
    2
    126023

    您可以使用??? 查看所有值(请参阅Information):

    ?x
    
    全球`x
    
    x[1]=2
    
    x[2]=31
    
    x[3]=126023

    【讨论】:

    • 我认为索引这个词通常应用在数组的上下文中。您现在使用它来表示函数参数。我觉得这可能会让一些人感到困惑。
    • @Sjoerd 我以为我用对了:reference.wolfram.com/mathematica/tutorial/…我误解了那个页面吗?
    • 请注意,此页面双引号之间有数组和索引字样,表明作者意识到这是对现有行话的滥用。我想你也知道这不是使用这些词的传统方式。我们经常看到 mma starters 使用 a[i] 而不是 a[[i]] 因为 mma 在这个意义上有点不合时宜。最好不要加剧这种混乱。
    • @Sjoerd,请根据需要编辑此答案。老实说,我不知道我应该写什么。我的术语很差。
    • 我很抱歉,玩纳粹语言不是我的本意。但考虑到问题的程度,认为尽可能清楚是更明智的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2016-06-01
    • 2012-10-08
    相关资源
    最近更新 更多