将列表元素分配给变量
Posted
技术标签:
【中文标题】将列表元素分配给变量【英文标题】:Assigning list elements to variables 【发布时间】:2012-01-05 01:18:00 【问题描述】:Mathematica 的以下操作FactorInteger[28851680048402838857]
的输出如下:
3897424303, 1, 7402755719, 1
我的问题是:我怎样才能提取两个素数(没有指数)并将它们分配给任意变量?
我基本上想检索两个素数,无论它们是什么,并为它们分配一些变量。
例如:x0 = 3897424303
和 x1 = 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
的值,模拟数组的索引:
(此代码使用MapIndexed
,Function
。)
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,请根据需要编辑此答案。老实说,我不知道我应该写什么。我的术语很差。 我很抱歉,玩纳粹语言不是我的本意。但考虑到问题的程度,认为尽可能清楚是更明智的做法。以上是关于将列表元素分配给变量的主要内容,如果未能解决你的问题,请参考以下文章
如何测试字符串包含列表中的元素并通过 Pandas 将目标元素分配给另一列