首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改变Python中的列表

改变Python中的列表
EN

Stack Overflow用户
提问于 2014-02-14 21:39:35
回答 3查看 2.4K关注 0票数 0

我有一份表格的清单

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

我想变异成:

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

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

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

我需要单引号,但不要双引号围绕每个列表。

编辑--这是我用来生成列表的代码;尽管我尝试过许多变体。很明显,我已经把“元素”变成了字符串--很明显,我在这里考虑的方式不对。

代码语言:javascript
运行
复制
array = ['A', 'B', 'C', 'D']
listOption = 0
finalArray = []

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

任何帮助都将不胜感激。

编辑-一个问题(正确地)被问为什么我需要它这样。最后的数组将被输入应用程序(Indigo控制服务器),以在配置对话框中填充下拉列表。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-14 21:43:57

代码语言:javascript
运行
复制
[('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'])]

我就是这样做的,但老实说,我可能会尽量不这么做,而是想知道我为什么要这么做。任何时候,当您创建一个带有数字的变量(或者在本例中是带有一个数据元素的元组和一个按数字命名数据的元素)时,请考虑如何组织您的消费代码,而不需要这样做。

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

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

尽管如此,我对你是如何把这一切都放在一起感兴趣的。你介意通过编辑你的答案来分享你的代码吗?也许我们可以一起找一个比这个黑客工作更好的解决方案。

票数 4
EN

Stack Overflow用户

发布于 2014-02-14 21:48:38

代码语言:javascript
运行
复制
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

元组不同于字符串,因为元组是不可变的列表。你可以通过书写来定义它:

代码语言:javascript
运行
复制
t = (something, something_else)

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

票数 3
EN

Stack Overflow用户

发布于 2014-02-14 21:57:24

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

代码语言:javascript
运行
复制
>>> map(lambda (index, item): ('Option{}'.format(index+1),item), enumerate(['a','b','c', 'd']))

[('Option1', 'a'), ('Option2', 'b'), ('Option3', 'c'), ('Option4', 'd')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21789981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档