2015-12-15 79 views
2

我想将我的列表保存为编号变量。保存编号变量

myList =[1,2,3,4,5] 

,我想救是这样的:

numb1 = myList[1] 
numb2 = myList[2] 
numb3 = myList[3] 
numb4 = myList[4] 
numb5 = myList[5] 

我不想做手工,因为myList中包含了很多元素。 你能给我个建议吗?

+1

你会遇到的一个问题是,Python列表索引从0开始,而不是1。因此,在你的例子中,你忽略了第一个元素'myList [0]',你会得到一个索引超出尝试访问不存在的mylist [5]'时发生的范围错误。 –

+3

“我想将我的列表保存到编号变量。”这打破了'list'类型的_entire purpose_。 – TigerhawkT3

+0

我甚至不能关闭它作为[“变量变量”](http://stackoverflow.com/questions/1373164/how-do-i-do-variable-variables-in-python)的重复,因为至少那个人想要使用不同的名字。然而,这只是一个虚假的“列表”。没有理由做任何这样的事情。使用“列表”。 – TigerhawkT3

回答

2

你可以简单地通过enumerate()做到这一点:

>>> myList =[1,2,3,4,5,6,7,8,9,10] 
>>> for index, value in enumerate(myList, start=1): 
...  globals()['numb'+str(index)] = value 
...  
... 
>>> numb1 
1 
>>> numb2 
2 
>>> numb3 
3 
>>> numb10 
10 
>>> 

但我建议你使用另一个字典而不是globals()

>>> myList =[1,2,3,4,5,6,7,8,9,10] 
>>> d = {} 
>>> for index, value in enumerate(myList, start=1): 
...  d['numb'+str(index)] = value 
...  
... 
>>> d['numb1'] 
1 
>>> d['numb2'] 
2 
>>> d['numb10'] 
10 
>>> 
+0

当然,仍然存在d ['numb10']是否比myList [9]有优势的问题。 –

+0

@JayanthKoushik:我认为这是一个OP的错字,然而'numb5 = myList [5]'在这种情况下会引发错误,正如汤姆在评论中所说的那样。我确定OP要''numb5 = myList [4]''给出'numb5 == 5'。另外'numb1 = myList [0]'给出'numb1 == 1'。 –

+0

@JayanthKoushik - 确实,这样做没有优势。只有缺点。引用一系列同类对象是“列表”的全部内容。 – TigerhawkT3

1

这是一个XY Problem中的问题X(即,指到list中的元素)比问题Y更容易(即创建一系列对应于list中元素的编号变量)。最重要的是,这样做会破坏使用list的全部目的。对所显示的五个元素进行硬编码并不需要太长的时间,但您提到的具有“多个元素”的list应该给而不是进行这种处理。

A list拥有几个对象,通常是同类型和目的,如一年中每一天的降雨英寸。这个数据结构可以很容易地将所有这些对象存储和处理在一起。您也可以通过索引单独引用它们。

如果您希望将myList的第一个元素指定为numb1,请改为使用myList[0]。这是您已经为该对象提供的参考。你做不是需要用一堆编号的参考来污染命名空间。 list类型专门用于这种情况。请使用list