如何在python中向变量添加字符或数字?

2024-06-25 23:46:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些清单,比如:

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

我想把它打印出来

 num = 0
 print(all+num)

但没用。 如何在变量名中添加字符或数字?你知道吗


Tags: videonumcontrolgearkillplayerbookthink
3条回答

嗯,我很确定您不需要也不真正想要它,但是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])

顺便说一句,这种语法很奇怪,因为你基本上是连接相邻的literal字符串。。。你知道吗

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

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']]

撇开它可能是多么糟糕的想法不谈(可能真的糟糕),变量名只是Python dict中的关键

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

对于全局变量,以及

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

对于某些对象的变量。你知道吗

你可以使用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)

相关问题 更多 >