加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python&R&Matlab:批量生成变量

发布时间:2020-12-20 10:43:44 所属栏目:Python 来源:网络整理
导读:在编写程序时,有时我们需要命名相当多的变量,比如x1、x2、...、xn,用手一个个打出来是相当麻烦的。那么这时我们就需要批量生成变量了。 这个功能应该在各种编程语言中都是可以实现的。以下我们以Python、R、Matlab分别为例,构造10个变量,每个的值为2x+3

在编写程序时,有时我们需要命名相当多的变量,比如x1、x2、...、xn,用手一个个打出来是相当麻烦的。那么这时我们就需要批量生成变量了。

这个功能应该在各种编程语言中都是可以实现的。以下我们以Python、R、Matlab分别为例,构造10个变量,每个的值为2x+3。

?

Python

方法1

这里要利用Python中的locals()函数。

locals()?函数会以字典类型返回当前位置的全部局部变量。

?利用这一点,我们就能“搞事情”了。

#变量构造
for i in range(10):
            locals()[x+str(i)]=2*i+3
#变量访问
for i in range(10):
            print(locals()[x+str(i)])

?

?方法2

利用Python中的另一个内置函数exec()。

函数exec()用于执行储存在字符串或文件中的 Python 语句,看上去很无聊的函数,在这里显出了威力。

#变量构造
for i in range(10):
            exec(x{}={}.format(i,2*i+3))
#变量访问
for i in range(10):
            exec(print(x{}).format(i))

?这里顺便提一下format的用法,示例如下:

>>> a=12
>>> print(sf  %d  sfd%a)
sf  12  sfd
>>> print(sf  {}  sfd.format(a))
sf  12  sfd

菜鸟上有个更详细的介绍,可参考:

https://www.runoob.com/python/att-string-format.html

?

方法3

在面向对象编程中,一个类的属性存放在字典__dict__中。

我们就可以在这里面做文章了。

#构造变量
class abc():
      def __init__(self):
            kk = self.__dict__
            for i in range(10):
                  kk[x+str(i)] = 2*i + 3
#访问变量
for i in range(10):
            exec(print(abc().x{}).format(i))

?

R

这里用到R中的两个函数assign()和paste()或paste0(),前者用于赋值,后者用于合并字符串。

for (i in 0:9) {
      assign(paste0(x,i),2*i+3)
}

?

Matlab

Matlab中有个eval()函数,跟Python里的exec()函数功能相似,用于执行字符串中的程序语句。

由于原理相似,不多赘述,直接上代码:

for i = 0:9
    b=[x,num2str(i)];
    eval([b,=2*i+3;])
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读