Python 在将列表名称创建为字符串后,如何打印列表?

Python 在将列表名称创建为字符串后,如何打印列表?,python,python-3.x,list,Python,Python 3.x,List,我有3个列表,我想用一个函数打印它们 list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] def list(number): list = 'list' + str(number) for items in list: print(list) 我想要的结果是 list(1) 1 2 3 我应该如何编写函数,以便在创建函数名后打印列表(如上所示)?谢谢大家! 您可以使用,甚至可以根据范围使用。对于您来说,范围现在

我有3个列表,我想用一个函数打印它们

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]

def list(number):
    list = 'list' + str(number)
    for items in list:
    print(list)
我想要的结果是

list(1)
1
2
3
我应该如何编写函数,以便在创建函数名后打印列表(如上所示)?谢谢大家!

您可以使用,甚至可以根据范围使用。对于您来说,范围现在似乎是全局的,因为变量在函数之外,所以:

for key, val in dict(globals()).items():
    if "list" in key:
        print(key, val)
问题是,大多数情况下,您不希望这样做,因为它将包含其他符号(函数、变量、模块等),因此更明智的做法是为其创建单独的字典并从中读取

myvalues = {
    "list1": [1, 2, 3],
    "list2": [4, 5, 6],
    "list3": [7, 8, 9]
}

def get_list(number):
    return myvalues[f"list{number}"]

print(get_list(1))
注意:正如其他人在评论中指出的那样,
list
在Python中已经是一个东西了,所以如果您不知道自己在做什么,那么使用它作为名称是不明智的。例如,一旦你这样做了,你就不能再(在该范围内)作为一种类型访问
列表
,例如,通过列表理解或其他黑客以外的其他方式将任何内容转换为列表,因为你基本上已经删除了唯一能够这样做的(公共)东西


注2:如果使用不当,则为邪恶。对于这个用例,您不需要它。如果有什么不同的话,大多数情况都可以由处理,尽管我认为在这里没有帮助。

您的代码的目的是什么?
list
是python中的保留关键字,不要命名变量名
list
@AvenDesta:Right,也不要命名函数。它可以作为助手函数使用。整个程序不仅仅是打印列表。有没有一种不用字典就能做到这一点的方法?@CaptainToad只使用
eval()
,我相信,但这是一种相当有问题的方法,甚至比使用
globals()
/
locals()
,所以我个人最不可能使用它。这个案子不行,我的案子不行。实际上,列表中的项目是另一个列表中项目的索引。我的目标是根据列表中的数字打印这些项目。@AvenDesta,最好忘记任何运行时代码评估(
eval
exec
,“literal\u eval”等),持续N年。很少有情况下它可以用来提高性能。@OlvinRoght即使在那里也只是。。。不。。。Cython在这里有更好的成本效益比。对于代码评估,它要么没有其他选项,要么完全安全,不受损坏和/或恶意用户输入的影响,就像在完全静态的字符串中一样,要么根据一组已知的可能性进行评估,最好甚至包括测试和包装函数。