Python 通过与另一个列表交互,是否可以找到放入另一个列表的列表的原始名称?

Python 通过与另一个列表交互,是否可以找到放入另一个列表的列表的原始名称?,python,Python,我有几个列表(来自其他地方的原始数据),我在另一个列表中收集这些列表,以便在代码的后面处理。(因此,如果我要编辑正在使用的原始数据,我只需更改原始列表,编辑所有内容列表以反映添加/删除的列表,并让所有后续代码反映这些更改,而无需更改代码其余部分中的任何内容。) 像这样: a=[1,2,3] b=[55,9,18] c=[15234,2] 一切=[a,b,c] 在某一点上,我想使用我的原始列表的名称(在我的示例中是“a”、“b”和“c”)。 有没有一种方法可以让我使用我的列表“一切”来访问放入其

我有几个列表(来自其他地方的原始数据),我在另一个列表中收集这些列表,以便在代码的后面处理。(因此,如果我要编辑正在使用的原始数据,我只需更改原始列表,编辑所有内容列表以反映添加/删除的列表,并让所有后续代码反映这些更改,而无需更改代码其余部分中的任何内容。)

像这样:

a=[1,2,3]
b=[55,9,18]
c=[15234,2]
一切=[a,b,c]

在某一点上,我想使用我的原始列表的名称(在我的示例中是“a”、“b”和“c”)。 有没有一种方法可以让我使用我的列表“一切”来访问放入其中的列表的名称

(守则也是如此

范围内的i(len(所有内容)):
打印('数据来自',?,'是',一切[i])
??将被理想的印刷品所取代

The data from a is [1, 2, 3]
The data from b is [55, 9, 18]
The data from c is [15, 234, 2]

)

您可以使用字典来进行此操作

a=[1,2,3]
b=[55,9,18]
c=[15234,2]
一切={'a':a,'b':b,'c':c}
对于范围内的i(len(一切['a']):
每件事[a'][i]+=10
打印(所有内容)
#{'a':[11,12,13],'b':[55,9,18],'c':[15234,2]}
印刷品(a)
# >> [11, 12, 13]
对于var,在everything.items()中使用val:
打印(f'来自{var}的数据是{val}')
"""
>>来自a的数据是[11,12,13]
来自b的数据是[55,9,18]
来自c的数据是[15234,2]
"""

有一种方法可以做到这一点,但使用字典相当于您的情况,因为它的键是唯一的,可以用作变量名。因此,使用字典,您可以检索值并以所需的任何格式打印它们:

a = [1,2,3]
b = [55,9,18]
c = [15,234,2]

everything= {'a': a, 'b': b, 'c': c}

for k, v in everything.items():
    print(f'The data from {k} is {v}')

如果您试图使用id访问变量名,则可以使用该id

a=[1,2,3]
b=[55,9,18]
c=[15,234,2]
everything = [a,b,c]

def get_name(your_id):
    name = [x for x,_ in globals().items() if id(_)==your_id ]
    return(name[0])

for i in range(len(everything)):
    print('The data from',get_name(id(everything[i])),'is',everything[i]) 
这将产生:

('The data from', 'a', 'is', [1, 2, 3])
('The data from', 'b', 'is', [55, 9, 18])
('The data from', 'c', 'is', [15, 234, 2])

是一个内置函数,它在全局名称空间中返回变量/值的dict。因此,您可以获得给定id的变量名。

可能重复的“在某一点上,我想使用原始列表的名称('在我的示例中是'a'、'b'和'c')。是否有一种方法可以让我使用我的列表'everything'来访问放入其中的列表的名称?”通常不可以。对象不知道引用它们的变量名。您应该自己跟踪这一点,而不是依赖于涉及全局名称空间内省的黑客。您可以简单地执行:
earthing['a']=[i+10 for i in everything['a']]
earthing['a']=list(map(lambda x:x+10,everything['a'])