如何解压缩列表?

时间:2010-11-30 18:11:45

标签: python list iterable-unpacking

以这种方式从列表中提取数据

line[0:3], line[3][:2], line[3][2:]

我收到一个数组和两个变量,应该是预期的:

(['a', 'b', 'c'], 'd', 'e')

我需要操纵列表,以便最终结果是

('a', 'b', 'c', 'd', 'e')

如何?谢谢。

P.S。是的,我知道我可以将第一个元素写为line[0], line[1], line[2],但我认为这是一个非常尴尬的解决方案。

5 个答案:

答案 0 :(得分:4)

from itertools import chain
print tuple(chain(['a', 'b', 'c'], 'd', 'e'))

输出:

('a', 'b', 'c', 'd','e')

答案 1 :(得分:1)

试试这个。

line = ['a', 'b', 'c', 'de']
tuple(line[0:3] + [line[3][:1]] + [line[3][1:]])
('a', 'b', 'c', 'd', 'e')

注意: 我认为你的切片逻辑中有一些有趣的事情。 如果[2:]返回任何字符,[:2]必须返回2个字符。 请提供您的输入行。

答案 2 :(得分:1)

明显的答案:而不是你的第一行,做:

line[0:3] + [line[3][:2], line[3][2:]]

这假设line[0:3]是一个列表。否则,您可能需要进行一些小的调整。

答案 3 :(得分:0)

此功能

def merge(seq):
    merged = []
    for s in seq:
        for x in s:
            merged.append(x)
    return merged 

来源:http://www.testingreflections.com/node/view/4930

答案 4 :(得分:0)

def is_iterable(i):
    return hasattr(i,'__iter__')

def iterative_flatten(List):
    for item in List:
        if is_iterable(item):
            for sub_item in iterative_flatten(item):
                yield sub_item
        else:
            yield item

def flatten_iterable(to_flatten):
    return tuple(iterative_flatten(to_flatten))

这适用于任何嵌套级别