Python 从列表中的元组中删除逗号
我有元组列表Python 从列表中的元组中删除逗号,python,list,python-3.x,tuples,Python,List,Python 3.x,Tuples,我有元组列表 items = [('Abkhazian',), ('Afar',), ('Afrikaans',), ('Albanian',), ('Amharic',), ('Arabic',), ('Armenian',), ...] 你想成功吗 ['Abkhazian', 'Afar', 'Afrikaans', 'Albanian', 'Amharic', 'Arabic', 'Armenian', ... ] 目前我找到的唯一解决方案如下 items = [str[i] for
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("]","")
我觉得应该有更好的方法Hm,项目中没有逗号,只有一个元素元组 如果您不需要在列表中包含单个元素元组,而是将它们作为字符串条目,只需使用列表理解:
res = [item[0] for item in items]
从原始列表中的每个元组中选择第一项
print(res)
['Abkhazian', 'Afar', 'Afrikaans', 'Albanian', 'Amharic', 'Arabic', 'Armenian']
事实上,使用@ShadowRanger的灵活解包替代方案,您确实可以获得不错的加速效果:
res = [item for item, in items]
可能看起来像一个输入错误,但它完成了任务。Hm,项目中没有逗号,只有一个元素元组 如果您不需要在列表中包含单个元素元组,而是将它们作为字符串条目,只需使用列表理解:
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])
在更具Python风格的方面,您可以解压缩列表:
items = list(list(zip(*items))[0])
没有花哨的东西,也没有看起来像打字错误的逗号
使用
zip
撤销单个元素tuple
s不是“Pythonic”。它可以工作,但称之为Pythonic是一种延伸。使用zip
撤消单个元素tuple
s不是“Pythonic”。它可以工作,但称之为Pythonic是一种延伸。微小的变化(通过将更多的工作推到C层,可能会更快地用于大型输入,尚未测试):从文件顶部的操作符import itemgetter
中,do列表(map(itemgetter(0),items))
(可以省略Py2上的列表包装)。或者是一种变体列表理解,它可以确保每个元组中只有一个项,使用序列解包,[项对项,项中]
;在Python3.5上测试了一个大约20%的低运行时间(Python中的索引速度惊人地慢),并且无论项有多大或多小,它都应该更快。微小的变化(对于大输入,可以通过将更多的工作推到C层来更快,尚未测试):来自文件顶部的操作符import itemgetter
,do列表(映射(itemgetter(0),items))
(可以省略Py2上的列表包装)。或者是一种变体列表理解,它可以确保每个元组中只有一个项,使用序列解包,[项对项,项中]
;测试表明,在Python3.5上运行时的速度降低了约20%(在Python中索引速度惊人地慢),并且无论项有多大或多小,它都应该更快。