Python:在迭代之间更改代码

标签 python loops syntax iteration

我有一些代码想要多次运行。这看似微不足道,但有一个转折:我想在迭代之间以特定的方式更改代码。例如:

A = 1
B = ['+','-','/'.'*','**']
C = []
for x in range(len(B)):
    C.append(A{B[x]}100)
print(C)

现在,我知道这段代码不起作用,而且它不是正确的 Python 语法,但我不仅仅是我希望代码执行的操作的示例。

理想情况下,我会将 C 作为列表,其中第 0 个元素是 1 + 100,第一个元素是 1 - 100,第二个元素是 1/100 等(注意:不是“1 + 100”字符串。1 的结果+ 100 计算 - 101)。基本上我希望代码以定义的方式在循环迭代之间改变自身。

我不想定义一些冗长的 if/elif 语句,因为列表 B 非常非常长。

编辑:

让我再举一个例子。这个与我的问题更相关。

A = ['mom','dad','me','you','c']
B = ['a','b','something','nothing','cat']
for x in range(len(A)):
    C_{A[x]} = B[x]

我想最终得到 5 个新变量,以便:

Print(C_mom)
a
Print(C_dad)
b
Print(C_c)
cat

我再次认识到这不是正确的 python 语法,并且该代码不起作用。

最佳答案

首先创建一个字典,其中每个字符串 '+' , '*'等指向从 operator 导入的相应方法模块。

现在循环B并从ops中获取相应的方法字典并将操作数传递给方法。

>>> from operator import add,sub,mul,div,pow
>>> ops = {'+':add,'-':sub,'/':div, '*':mul,'**':pow}
>>> B = ['+','-','/','*','**']
>>> A = 1
>>> [ops[item](A,100) for item in B]
[101, -99, 0, 100, 1]

使用'/': operator.truediv如果你想要ops['/'](1,100)返回0.01而不是0 .

更新:

在 python 中创建动态变量不是一个好主意,你最好在这里使用字典:

>>> A = [1,2,3,4,5]
>>> B = ['a','b','something','nothing','cat']
>>> c = {x:y for x,y in zip(A,B)}
>>> c[1]
'a'
>>> c[2]
'b'
>>> c[5]
'cat

使用globals()创建动态变量(不要使用此方法):

for x,y in zip(A,B):
    globals()['C'+str(x)] =y
...     
>>> C1
'a'
>>> C2
'b'

关于Python:在迭代之间更改代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423369/

相关文章:

python - 迭代调用 stats.norm.pdf() 运行缓慢

python - Python 3 变量名接受哪些 Unicode 符号?

python - 增加在 Python 中进行单元测试的类的日志记录详细程度

python - 在python中操作文本文件

javascript - 如何在函数参数中使用循环并将结果记录到控制台

powershell - 在Powershell中打印参数

perl - Perl中double 'at'(@@)是什么意思?

python glob匹配模式

python - 导入 BERT : module 'tensorflow._api.v2.train' has no attribute 'Optimizer' 时出错

php - 如何在 3 个不同的表中使用 while 循环来回显数据库的特定列