在Python中改变列表

2024-06-06 11:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份表格的清单

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

我想变异成:

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

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

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

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

[编辑]-这是我用来生成列表的代码;尽管我已经尝试了许多变体。显然,我已经把'element'变成了一个字符串——显然,我在这里没有正确地思考它。在

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

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

任何帮助都将不胜感激。在

[编辑]-有人问我为什么要这样做。最后一个数组将被送入一个应用程序(Indigo home control server),以填充配置对话框中的下拉列表。在


Tags: 代码编辑列表elementarray表格变异option1
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

元组不同于字符串,因为元组是一个不可变的列表。你可以通过写下:

^{pr2}$

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

[('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'])]

我就是这样做的,但老实说,我可能会尽量不这么做,而是想知道我为什么要这么做。任何时候,当你在变量中加入一个数字(或者在这个例子中,一个元组包含一个数据元素和一个元素以数字命名数据)的时候,你应该考虑如何组织你的消费代码而不需要它。

例如:当我开始专业编写代码时,我工作的公司有一个问题,就是在我们的一些地方没有及时清除文件。注意,不是所有的文件,只有一些。为了向我们的软件开发人员提供解决问题的信息,我们需要一个文件列表,其中清除过程失败的站点。

因为我还没做好准备,所以我没有做一些明智的事情,比如用文件的键和大小的值来制作字典,而是使用locals()来创建有意义的新变量。不要这样做,你的变量对任何人都没有意义,除了未来的程序员。基本上,我有一大堆变量,名为"J_ITEM"和{}等等,每个文件一个,然后我把它们和[item for item in locals() if item.startswith("J_")]一起分组。太疯狂了!不要这样做,而是构建一个更合理的数据结构。

也就是说,我对你怎么把它们组合在一起很感兴趣。你介意通过编辑你的答案来分享你的代码吗?也许我们可以一起研究一个比这个黑客工作更好的解决方案。

除了adsmith很好的答案之外,我还要加上map方式:

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

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

相关问题 更多 >