在Python中改变列表

时间:2014-02-14 21:39:36

标签: python arrays list

我有一份表单

['A', 'B', 'C', 'D']

我想改变成:

[('Option1','A'), ('Option2','B'), ('Option3','C'), ('Option4','D')]

我可以迭代原始列表并成功变异,但最接近我想要的是:

["('Option1','A')", "('Option2','B')", "('Option3','C')", "('Option4','D')"]

我需要单引号,但不希望每个列表都有双引号。

[编辑] - 这是我用来生成列表的代码;虽然我尝试了很多变化。显然,我已经将'元素'变成了一个字符串 - 很明显,我并没有在这里考虑正确的方法。

array = ['A', 'B', 'C', 'D']
listOption = 0
finalArray = []

for a in array:
    listOption += 1
    element = "('Option" + str(listOption) + "','" + a + "')"
    finalArray.append(element)

非常感谢任何帮助。

[编辑] - 问了一个问题(正确),为什么我这样需要它。最终的数组将被送到一个应用程序(Indigo家庭控制服务器),以填充配置对话框中的下拉列表。

3 个答案:

答案 0 :(得分:4)

[('Option{}'.format(i+1),item) for i,item in enumerate(['A','B','C','D'])]

# EDIT FOR PYTHON 2.5
[('Option%s' % (i+1), item) for i,item in enumerate(['A','B','C','D'])]

我就是这样做的,但说实话,我可能会尽量不这样做,而是想知道为什么我需要这样做。每当你在变量中加上一个数字(或者在这种情况下是一个包​​含一个数据元素的元组和一个命名数据BY NUMBER的元素)时,请考虑如何组织你的消费代码而不需要它。 / p>

例如:当我开始专业编码时,我工作的公司遇到的问题是文件没有按时在我们的几个地点被清除。不是所有的文件,请注意,只是少数。为了向我们的软件开发人员提供解决问题的信息,我们需要一个文件列表,清除过程失败的站点。

因为我的耳朵后面仍然湿透,而不是做一些SANE,比如使用文件的键和大小的值来制作字典,我使用locals()来创建新的变量WITH MEANING。不要这样做 - 除了未来的编码员,你的变量对任何人都没有意义。基本上我有一大堆变量名为"J_ITEM""J_INV"等等,其值为25009等,每个文件一个,然后我将它们与[item for item in locals() if item.startswith("J_")]一起分组。这是不可靠的!不要这样做,而是建立一个更合理的数据结构。

那就是说,我对你如何把它们放在一起感兴趣。你介意通过编辑答案来分享你的代码吗?也许我们可以合作一个比这个hackjob更好的解决方案。

答案 1 :(得分:3)

x = ['A','B','C','D']
option = 1
answer = []
for element in x:
  t = ('Option'+str(option),element) #Creating the tuple 
  answer.append(t)
  option+=1

print answer

元组与字符串不同,元组是不可变列表。您可以通过编写来定义它:

t = (something, something_else)

您可能将t定义为字符串"(something, something_else)",该字符串由表达式周围的引号指示。

答案 2 :(得分:1)

除了adsmith很好的答案,我还会添加map方式:

>>> map(lambda (index, item): ('Option{}'.format(index+1),item), enumerate(['a','b','c', 'd']))

[('Option1', 'a'), ('Option2', 'b'), ('Option3', 'c'), ('Option4', 'd')]