使用python组合列表中的元素

时间:2011-08-10 18:30:52

标签: python list

给定输入:

list = [['a']['a', 'c']['d']]

预期输出:

mylist = a,c,d

尝试了各种可能的方法,但收到的错误是TypeError:list indices必须是整数而不是元组。

尝试: 1。

k= []
list = [['a']['a', 'c']['d']]

#k=str(list)
for item in list:
       k+=item

print k

2

print zip(*list)

同样剥离开括号和右括号。

2 个答案:

答案 0 :(得分:4)

你想要的是flattening a list

>>> import itertools
>>> l
[['a'], ['a', 'c'], ['d']]
>>> res = list(itertools.chain.from_iterable(l))
>>> res
['a', 'a', 'c', 'd']
>>> set(res) #for uniqify, but doesn't preserve order
{'a', 'c', 'd'}

编辑:您的问题是,在定义列表时,您应该使用逗号分隔值。所以,不是:

list = [['a']['a', 'c']['d']]

使用逗号:

list = [['a'], ['a', 'c'], ['d']]

而且,使用list作为变量是一个坏主意,它与内置list类型冲突。

而且,如果你想使用for循环:

l = [['a'], ['a', 'c'], ['d']]
k = []

for sublist in l:
    for item in sublist:
        if item not in k: #if you want list to be unique.
            k.append(item)

但是我认为使用itertools.chain是更好的主意和更多的pythonic。

答案 1 :(得分:0)

虽然utdemir的回答有效地完成了工作,但我认为你应该阅读this - 从“11.6。递归”开始。 第一个示例处理类似的问题,因此您将看到如何使用基本工具处理这些问题。