我有一个列表如下:
a = [1, 2, 3]
b = [2, 3, 4]
c = []
append blah blah blah
我目前正在做:
for x in c:
print(x)
并输出[1,2,3]。如何让它输出'a'而不是?
答案 0 :(得分:2)
有几种方法可以达到你想要的效果。第一个建议需要使用不同的数据结构。最后一个建议是出于演示目的仅,永远不会被使用。
选项1.将数据存储在字典中:
my_data = {"a": [1, 2, 3], "b": [2, 3, 4]}
my_data["c"] = [my_data.get('a'), my_data.get('b')]
然后你只需迭代键值对。
>>> for name, value in my_data.items():
... print name, value
...
a [1, 2, 3]
c [[1, 2, 3], [2, 3, 4]]
b [2, 3, 4]
字典没有有用的排序,所以如果你想订购,可以使用OrderedDict,或者像元组列表这样的其他数据结构。
或者你可以在迭代之前对它们进行排序:
for name, value in sorted(my_data.items()):
print name, value
您还可以在分配变量后创建字典
>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [a, b]
>>> my_data = {"a": a, "b": b, "c": c}
选项可怕。执行此操作的非常hackish方式(仅用于演示目的)是使用locals()
>>> a = [1, 2, 3]
>>> b = [2, 3, 4]
>>> c = [a, b]
>>> for name, value in locals().items():
... if len(name) != 1:
... continue
... print name, value
...
a [1, 2, 3]
c [[1, 2, 3], [2, 3, 4]]
b [2, 3, 4]
答案 1 :(得分:0)
如果要打印变量名称,请参阅Can I print original variable's name in Python?和How can you print a variable name in python?
然而,那里的答案说你不应该这样做。
你告诉它打印c的完整内容,其中包含确实
的对象a和b[1, 2, 3]
[2, 3, 4]
您说要打印字符串'a'
要做到这一点,你必须定义
c = ['a', 'b']
完全不同。
答案 2 :(得分:0)
你正在打印。你的名单c实际上是
C = [[1,2,3], [2,3,4]]
如果您在打印之前修改了c。将显示a中的新值。当python通过引用传递时,c包含对
的引用