【问题标题】:How to add character or a number to a variable in python? [duplicate]如何将字符或数字添加到python中的变量? [复制]
【发布时间】:2019-01-09 13:48:36
【问题描述】:

我有一些类似的列表:

all0 = [['mortem' 'cliffi' 'gear' 'lerp' 'control']]
all1 = [['video' 'player' 'stori' 'book' 'think' 'narr' 'kill']]  

我想打印出来像

 num = 0
 print(all+num)

但它没有用。 如何在变量名中添加字符或数字?

【问题讨论】:

  • 为什么没有一个名为alldict 带有键01、...然后您可以使用num 轻松地从字典中获取和设置值。 (尽管请记住 all 是一个内置函数。)

标签: python python-3.x string variables add


【解决方案1】:

嗯,我很确定你不需要也不需要它,但是 Python 提供了计算一个变量名。简单来说,它是一个相当高级的功能,通常的方法是使用映射(dict)或序列(listtuple)容器。

在这里,你会使用:

all = []
all.append([['mortem' 'cliffi' 'gear' 'lerp' 'control']])
all.append([['video' 'player' 'stori' 'book' 'think' 'narr' 'kill']])

num = 0
print(all[0])

顺便说一句,这种语法很奇怪,因为您本质上是在连接相邻的文字字符串...

但如果你真的非常需要它,你可以构建一个变量插值器:

def getvar(name):
    if name in locals():
        return locals()[name]
    elif name in globals():
        return globals()[name]
    else:
        raise NameError(repr(name) + ' is not defined')

你可以这样做:

all0 = [['mortem' 'cliffi' 'gear' 'lerp' 'control']]
all1 = [['video' 'player' 'stori' 'book' 'think' 'narr' 'kill']]

num = 0

print(getvar("all%d" % num))

并按预期获得:

[['mortemcliffigearlerpcontrol']]

【讨论】:

    【解决方案2】:

    您可以为此使用eval()

    eval('print(all{})'.format(num))
    

    但这确实是一种糟糕的风格。不要这样做。您应该重构您的代码并使用for 循环来遍历您的列表,例如

    all = [['mortem' 'cliffi' 'gear' 'lerp' 'control']]
    all.append(['video' 'player' 'stori' 'book' 'think' 'narr' 'kill']) 
    
    for l in all:
        print(l)
    

    【讨论】:

      【解决方案3】:

      抛开它可能是多么糟糕的想法(可能真的糟糕),变量名只是 Python dict 中的键。单线解决方案可能是:

      vars()[new_name] = vars().pop(old_name)

      对于全局变量,并且

      vars(some_obj)[new_name] = vars(some_obj).pop(old_name)

      对于 some_obj 对象的变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2015-11-14
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2012-08-07
        相关资源
        最近更新 更多