Python&R&Matlab:批量生成变量
在编写程序时,有时我们需要命名相当多的变量,比如x0、x1、x2、...、xn,用手一个个打出来是相当麻烦的。那么这时我们就需要批量生成变量了。
解决这个问题的关键在于,'xn'是自动构造出来的字符串,需要利用适当途径,把它转化成能被赋值的变量。
这个功能在各种编程语言中应该都是可以实现的。以下我们以Python、R、Matlab分别为例,构造10个变量,每个的值为2n+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 :) {
assign(paste0('x',i),*i+)
}

Matlab
Matlab中有个eval()函数,跟Python里的exec()函数功能相似,用于执行字符串中的程序语句。
由于原理相似,不多赘述,直接上代码:
for i = :
b=['x',num2str(i)];
eval([b,'=2*i+3;'])
end

Python&R&Matlab:批量生成变量的更多相关文章
- R语言批量生成变量(变量名中含有参数)
我们经常会需要生成这样一类的变量,比如a1,a2,a3...... 这时候我们需要用到这两个函数:get()和assign() get()用法 get()函数只是在环境中搜索该变量名的变量,如果该变量 ...
- Python写一个批量生成账号的函数
批量生成账户信息,产生的账户由@sina.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母和数字组成. def Users(num,len): # n ...
- Python操作Word批量生成文章
需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随 ...
- matlab批量修改变量的名称
使用matlab做实验的时候,保存的文件里面的变量名都是一样的 ,所以希望能够把变量名全部都重命名.我举个个例子,假设我一堆文件,文件名分别是gds1,gds2,gds2,-.. 但是实际上load进 ...
- Python批量生成用户名
写在最前 平时在工作中尤其是在做压测的时候难免需要一些用户名和密码,写个简单的Python小脚本批量生成一些 代码示例 import random,string #生成大小字母和数字一起的大字符串 a ...
- MyEclipse和eclipse生成变量快捷键
MyEclipse和eclipse生成变量快捷键MyEclipse和eclipse生成变量快捷键 一.MyEclipse快捷生成变量(两种):第一种: 光标放在该行的任意位置,按 Ctrl+2,会弹出 ...
- R8—批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数
一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到 ...
- python脚本批量生成数据
在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...
- 批量生成python自动化测试脚本
先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架.我发现他们出的脚本都是挨个手写的,格式上也是参差不齐.所以有了根据用例表批量生成脚本的一段小代码 对一个测试脚本必 ...
随机推荐
- 差分+贪心:IncDec序列
原题 题目描述给定一个长度为 n 的数列 a1,a2,…,ana1,a2,…,an,每次可以选择一个区间 [l,r][l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列 ...
- [转载]Jupyter Notebook 的快捷键
原文:http://blog.csdn.net/lawme/article/details/51034543 Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输 ...
- 【Linux开发】linux设备驱动归纳总结(四):4.单处理器下的竞态和并发
linux设备驱动归纳总结(四):4.单处理器下的竞态和并发 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- C++学习笔记-namespace
指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中 关于iostream <iostream>和<iostream.h>格式不 ...
- Shell初学(八)linux下的ACL
[1]ACL的作用 简单直接解释一下ACL的作用,即把权限的个别化额外添加. 可以解决如下问题~~比如: [1.1]基于用户: 我有10个用户a1-a10,我有一个文件夹/tmp/test,我想给a1 ...
- FFmpeg4.0笔记:封装ffmpeg的解码功能类CDecode
Github https://github.com/gongluck/FFmpeg4.0-study/tree/master/Cff CDecode.h /********************** ...
- CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站
本次实验要进行的是在CentOS7.2,内核版本3.10.0-327.el7.x86_64的环境下搭建LAMP和LNMP,并在此之上做一个WordPress博客网站. [root@Shining ~] ...
- try catch和finally
在C#中这三个关键字用于处理异常. 这三个关键字try是必定要用的,要不然就失去了意义.然后catch和finally可以不用但是要注意遵循原则. 存在一个或多个catch的时可以不用finally, ...
- sql--index 索引
CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...
- Mysql学习(二)之安装、开启自启、启动、重启、停止
安装 方法一:通过homebrew brew install mysql 方法二:通过官网dmg文件安装(Mac) https://dev.mysql.com/downloads/mysql/ 通过h ...