Python&R&Matlab:批量生成变量
在编写程序时,有时我们需要命名相当多的变量,比如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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |