从元组中删除逗号列表
问题描述:
我的元组从元组中删除逗号列表
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]
可能看起来像一个错字,但它能够完成任务。
答
在一个更Python的一面,你可以解压缩列表:
items = list(list(zip(*items))[0])
+2
使用'zip'来撤消单个元素'tuple's不是“Pythonic”。它的工作原理,但称Pythonic是一个延伸。 – ShadowRanger
答
结果= [将我的物品i [0] 打印(结果)
没有什么花哨,没有逗号是看起来像输入错误
感谢这个完美的作品 – thewizoid
微不足道的变化(通过推动更多的工作到C层,未测试,可能更快的大输入):'从操作员导入itemgetter'在文件的顶部,do列表map(itemgetter(0),items))'(可以省略'list'打包PY2)。或者一个变体列表理解,确保每个'元组'''''''''''''''''使用序列解包,'[item for item,in items]''测试了一个在Python 3.5上运行时降低了大约20%(Python中索引的速度令人惊讶的慢),无论“物品”有多大或多小,它都应该更快。 – ShadowRanger