python批量创建变量并赋值操作


Posted in Python onJune 03, 2021

一,简单的情况:

核心是exec函数,exec函数可以执行我们输入的代码字符串。exec函数的简单例子:

exec ('print "hello world"')
hello world

可以很清晰的看到,我们给exec传入一个字符串'print "hello world"',exec是执行字符串里面的代码print "hello world"。根据这个特性,我们可以用占位符实现我们对变量的定义,如:

exec ("temp%s=1"%1)

这段代码的意思是,让exec执行temp1=1。字符串里面的%s由‘1'代替了。我们在外面再套一个循环就可以实现对多个变量的定义了。

for i in range(10):
    exec ("temp%s=1"%i)

在这里,通过一个循环来生成10个变量,i的变化从0到9。用变量i替代%s,所以在每次循环里面,分别给temp0,temp1赋值。

执行结果:

python批量创建变量并赋值操作

如果想要替换多个占位符,可以这样写:

exec ("temp%s=%d"%(i,i))

在这里,分别以字符串、整数形式替换占位符,执行结果:

temp1=1

又如:

df_vars = [ 'df_%s_head' %i for i in range(0,10)]

df_vars:

['df_0_head',
 'df_1_head',
 'df_2_head',
 'df_3_head',
 'df_4_head',
 'df_5_head',
 'df_6_head',
 'df_7_head',
 'df_8_head',
 'df_9_head']

再比如:

for i in range(8):
     exec('v' + str(i) + ' = ' + str(i))
     print('v' + str(i) + ':', eval('v' + str(i)))

输出结果:

python批量创建变量并赋值操作

例子:

在python中,为了生成顺序的变量名并将其赋值,如

a_1 = []
a_2 = []
a_3 = []
.....
a_100 = []

可以利用将字符串转换成变量的函数exec

for i in range(1,100):
    b = 'a_' + str(i)
    exec(b + '= %r' % [])

二,略微复杂的命名

提取出:

D:/MyData/Excel/input/MarketHoliday_2018.xls

D:/MyData/Excel/input/MarketHoliday_2019.xls

。。。

D:/MyData/Excel/input/MarketHoliday_2023.xls

year = [2018,2019,2020,2021,2022,2023] 
file_path = 'D:/MyData/Excel/input/MarketHoliday_'  #注意:这里一定要用单引号

要先把year转为dict, 以便运用在For循环中,这里我用pandas转换

import pandas as pd
year = pd.Series(year)
year_dict = year.to_dict()

得到:

python批量创建变量并赋值操作

for i in year_dict:
    exec('Var_'+str(year_dict[i])+'='+'"'+(file_path + str(year_dict[i])+'.xls'+'"'))
    print('Var_'+str(year_dict[i])+':',eval('Var_'+str(year_dict[i])))

最终结果:

python批量创建变量并赋值操作

python 动态生成变量名及赋值

今晚在处理数据的时候偶然遇到一个命名上的难点,但是为了实现自动处理坚决不动手一条一条输入参数,我非要把它解决了,问题是这样的

首先我想要调用一个方法,然后输入的变量可以是字符串,但是,当你直接把字符串输入就不行了

这里献上代码:

t=['42342lh','234']
s='fgdfhdfhdfh'
exec(s+'=%s'%'t[0]')
print(fgdfhdfhdfh)
for i in range(2):
    m=f'names{i}'
    exec(m+'=%s'%'t[i]')
print(names1)

可以看出来m可以自己按规律这sing,同时也可以规律读取,最后每个m就成了变量。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python urllib爬取百度云连接的实例代码
Jun 19 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
python mysql 字段与关键字冲突的解决方式
Mar 02 Python
python如何设置静态变量
Sep 07 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
Python tkinter实现日期选择器
Feb 22 Python
python元组拆包实现方法
Feb 28 Python
Autopep8的使用(python自动编排工具)
Mar 02 Python
详解运行Python的神器Jupyter Notebook
Jun 03 #Python
python中如何对多变量连续赋值
Python连续赋值需要注意的一些问题
Jun 03 #Python
pytorch fine-tune 预训练的模型操作
Jun 03 #Python
Python实现byte转integer
Jun 03 #Python
Python数据分析之绘图和可视化详解
Python数据分析之pandas读取数据
Jun 02 #Python
You might like
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
jQuery 选择器理解
2010/03/16 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
JavaScript实现通讯录功能
2020/12/27 Javascript
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
浅谈python迭代器
2017/11/08 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python面向对象封装操作案例详解
2019/12/31 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
公司清洁工岗位职责
2013/12/14 职场文书
《燕子》教学反思
2014/02/18 职场文书
七夕情人节促销方案
2014/06/07 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技