在编写程序时,有时我们需要命名相当多的变量,比如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:批量生成变量的更多相关文章

  1. R语言批量生成变量(变量名中含有参数)

    我们经常会需要生成这样一类的变量,比如a1,a2,a3...... 这时候我们需要用到这两个函数:get()和assign() get()用法 get()函数只是在环境中搜索该变量名的变量,如果该变量 ...

  2. Python写一个批量生成账号的函数

    批量生成账户信息,产生的账户由@sina.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母和数字组成. def Users(num,len): # n ...

  3. Python操作Word批量生成文章

    需要做一些会议记录.总共有多少呢?五个地点x7个月份x每月4篇=140篇.虽然不很重要,但是140篇记录完全雷同也不好.大体看了一下,此类的记录大致分为四段.于是决定每段提供四种选项,每段从四选项里随 ...

  4. matlab批量修改变量的名称

    使用matlab做实验的时候,保存的文件里面的变量名都是一样的 ,所以希望能够把变量名全部都重命名.我举个个例子,假设我一堆文件,文件名分别是gds1,gds2,gds2,-.. 但是实际上load进 ...

  5. Python批量生成用户名

    写在最前 平时在工作中尤其是在做压测的时候难免需要一些用户名和密码,写个简单的Python小脚本批量生成一些 代码示例 import random,string #生成大小字母和数字一起的大字符串 a ...

  6. MyEclipse和eclipse生成变量快捷键

    MyEclipse和eclipse生成变量快捷键MyEclipse和eclipse生成变量快捷键 一.MyEclipse快捷生成变量(两种):第一种: 光标放在该行的任意位置,按 Ctrl+2,会弹出 ...

  7. R8—批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数

    一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到 ...

  8. python脚本批量生成数据

    在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...

  9. 批量生成python自动化测试脚本

    先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架.我发现他们出的脚本都是挨个手写的,格式上也是参差不齐.所以有了根据用例表批量生成脚本的一段小代码 对一个测试脚本必 ...

随机推荐

  1. 51CTO下载-html+javascript+css学习宝典

    一.html知识 1. meta标签 Meta: 提供网页信息,搜索引擎使用 <meta name=“aa” content=“bbb”> <meta http-equiv=“exp ...

  2. BP原理 - 前向计算与反向传播实例

    Outline 前向计算 反向传播 很多事情不是需要聪明一点,而是需要耐心一点,踏下心来认真看真的很简单的. 假设有这样一个网络层: 第一层是输入层,包含两个神经元i1 i2和截距b1: 第二层是隐含 ...

  3. Windows系统中CMD wmic查看硬盘、内存、CPU、BIOS、网卡等信息。(附带脚本)

    目录 Windows系统中CMD wmic查看硬盘.内存.CPU.BIOS.网卡等信息. 查看内存相关 查看内存主板数量(两条命令均可) 查看物理内存 查看逻辑内存 查看缓存 查看虚拟内存 查看网络相 ...

  4. 【CSP模拟】小凯的疑惑(DP)

    首先,这道题正解的思路是从subtask2而得来的,所以先讲一下subtask2的做法. 因为保证答案不超过long long,所以直接求最大权独立集即可:dp[u][0]表示u点一定不能取的答案,d ...

  5. 小菜鸟之Oracle数据库之事务

    Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...

  6. 使用GPU训练TensorFlow模型

    查看GPU-ID CMD输入: nvidia-smi 观察到存在序号为0的GPU ID 观察到存在序号为0.1.2.3的GPU ID 在终端运行代码时指定GPU 如果电脑有多个GPU,Tensorfl ...

  7. sql server sum函数

    sum()函数 --SUM 函数返回数值列的总数 语法:SELECT SUM(column_name) FROM table_name

  8. python 字符串前面加r,u的含义

    u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u:但是中文, ...

  9. Vue-cli脚手架起步

    1.安装node.js 下载地址:http://nodejs.cn/download/ 测试是否安装成功 node -V 检测安装包 npm -v 检测npm 2.安装webpack npm inst ...

  10. js鼠标点击特效,有关参数设置

    效果图,用的faststone--录像--togif,黄色圆圈实际是不显示的 博客后台管理设置 本地新建一个demo.html文件,可以自行测试,要引入jquery文件哦 来个“红橙黄绿蓝靛紫”的点击 ...