我有一份表单
['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家庭控制服务器),以填充配置对话框中的下拉列表。
答案 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')]