将元组转换为列表并删除内部元组/列表

时间:2011-11-14 21:29:30

标签: python list tuples

这是我的元组元组:

(('dlazarov',), ('ant1',))

我想把它变成这个:

['dlazarov', 'ant1']

我试图用这个:

userdata = (('dlazarov',), ('ant1',))

userdata = map(list, userdata)
userdata = sum(userdata, [])

但这似乎不起作用。

没关系,我最后有一个错字。

另外 - 问题,如果你们想要回答它 - 在列表,itertools等知识上获得更好的最佳方法。我一直使用我熟悉的低效解决方法,但这些方法效率很低,而且时间也很长耗时。地狱,有一半的时间,我必须使用字符串和拆分将事物变成一个列表。

4 个答案:

答案 0 :(得分:2)

您可以使用列表理解:

>>> userdata = (('dlazarov',), ('ant1',))
>>> [x[0] for x in userdata]
['dlazarov', 'ant1']

答案 1 :(得分:2)

该操作称为“展平”。

您可以使用itertools.chain.from_iterable来处理可迭代迭代的常见情况(在您的情况下,是元组的元组):

>>> from itertools import chain
>>> tot = (('dlazarov',), ('ant1',))
>>> list(chain.from_iterable(tot))
['dlazarov', 'ant1']

答案 2 :(得分:1)

你的方式似乎有效,但这是另一种方法:

from itertools import chain

list(chain(*userdata))

这是这里的食谱之一:http://docs.python.org/library/itertools.html#recipes

答案 3 :(得分:0)

当然,还有迭代方式:

mytuple = (('dlazarov',), ('ant1',))

mylist = []
for t in mytuple:
    mylist.append(t[0])