2016-03-01 76 views
-4

我有一個列表的列表,像這樣:名單,要輸出變量,而不是看重

a = [1, 2, 3] 
b = [2, 3, 4] 
c = [] 
append blah blah blah 

我目前正在做的:

for x in c: 
    print(x) 

,它是outputing [1,2 ,3]。我將如何得到它來輸出'a'呢?

+0

我顯示的值,我的實際文件中,我追加第一名單的第二位。 – jgree157

+0

改爲使用'['a','b']'。 – Daniel

+0

使用字典:'{ 'A':A, 'B':B}' –

回答

0

您正在打印一個。你的C組名單實際上

C = [[1,2,3], [2,3,4]] 

是如果打印C之前修改。 a中的新值將顯示。由於python通過引用傳遞,而c包含對引用的一個

2

有幾種方法可以實現你想要的。第一個建議需要使用不同的數據結構。最後一個建議是用於演示目的ONLY,應該永遠不會被使用

選項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]