将列表元素分配给变量

Posted

技术标签:

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

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

3897424303, 1, 7402755719, 1

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

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

例如:x0 = 3897424303x1 = 7402755719

谢谢!

【问题讨论】:

【参考方案1】:

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

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,请根据需要编辑此答案。老实说,我不知道我应该写什么。我的术语很差。 我很抱歉,玩纳粹语言不是我的本意。但考虑到问题的程度,认为尽可能清楚是更明智的做法。

以上是关于将列表元素分配给变量的主要内容,如果未能解决你的问题,请参考以下文章

Python,将列表的最后三个元素分配给各个变量

将一个列表的元素分配给另一个列表的元素

Firestore 查询 - 将重复的查询元素分配给变量

如何测试字符串包含列表中的元素并通过 Pandas 将目标元素分配给另一列

如何将列表中的值分配给熊猫数据框并控制每个列表元素在数据框中的分布/频率

尝试将变量值分配给结构元素。起初变量有正确的值,但结构元素有垃圾值