从元组中删除逗号列表

从元组中删除逗号列表

问题描述:

我的元组从元组中删除逗号列表

items = [('Abkhazian',), ('Afar',), ('Afrikaans',), ('Albanian',), ('Amharic',), ('Arabic',), ('Armenian',), ...] 

的列表,并希望把它

['Abkhazian', 'Afar', 'Afrikaans', 'Albanian', 'Amharic', 'Arabic', 'Armenian', ... ] 

目前我已经找到了唯一的解决办法是如下

items = [str[i] for item in items] 
for i in range(len(items)): 
    items[i] = items[i].replace("[","") 
    items[i] = items[i].replace("(","") 
    items[i] = items[i].replace("'","") 
    items[i] = items[i].replace(",","") 
    items[i] = items[i].replace(")","") 
    items[i] = items[i].replace("]","") 

我觉得应该有更好的办法

嗯,项目中没有逗号,它只是你得到的单元素元组。

如果需要未在列表中单个元素的元组,相反,它们作为字符串项,只用一个列表理解:

res = [item[0] for item in items] 

,你在选择第一项每元组原始列表。

print(res) 
['Abkhazian', 'Afar', 'Afrikaans', 'Albanian', 'Amharic', 'Arabic', 'Armenian'] 

你实际上得到一个不错的加速与@ ShadowRanger的新潮拆包替代:

res = [item for item, in items] 

可能看起来像一个错字,但它能够完成任务。

+0

感谢这个完美的作品 – thewizoid

+1

微不足道的变化(通过推动更多的工作到C层,未测试,可能更快的大输入):'从操作员导入itemgetter'在文件的顶部,do列表map(itemgetter(0),items))'(可以省略'list'打包PY2)。或者一个变体列表理解,确保每个'元组'''''''''''''''''使用序列解包,'[item for item,in items]''测试了一个在Python 3.5上运行时降低了大约20%(Python中索引的速度令人惊讶的慢),无论“物品”有多大或多小,它都应该更快。 – ShadowRanger

在一个更Python的一面,你可以解压缩列表:

items = list(list(zip(*items))[0]) 
+2

使用'zip'来撤消单个元素'tuple's不是“Pythonic”。它的工作原理,但称Pythonic是一个延伸。 – ShadowRanger

结果= [将我的物品i [0] 打印(结果)

没有什么花哨,没有逗号是看起来像输入错误