一个改变python列表结构的函数

时间:2015-02-11 20:32:56

标签: python string list

我打算编写一个可以改变列表结构的python函数。 输入是:

list=[['A B C','D E F'],['1 2 3 ', '4 5 6 ']]

输出结果为:

list=[['A','B','C','D','E','F'],['1','2','3','4','5','6']]

我知道我需要split()append()。令人困惑的部分是循环。 非常感谢!!

4 个答案:

答案 0 :(得分:4)

使用join方法连接嵌套列表中的contains元素。然后在空格处分开。

my_list = [['A B C', 'D E F'], ['1 2 3 ', '4 5 6']]
my_list = [' '.join(i).split() for i in my_list]

答案 1 :(得分:3)

有时候最好不要过度思考它。让我们从问题的一部分['A B C','D E F']开始。您想要拆分每个字符串,并将部件放入结果列表中。让我们从编写该函数开始。您已正确声明可以使用split / append完成此操作,但是列表也恰好有extend方法,可以为您节省几行代码。

def as_char(seq):
    result = []
    for item in seq:
        result.extend(item.split())
    return result

现在您要将该功能应用于输入中的每个列表。为此,您可以使用map进行列表理解。

sample_input = [['A B C','D E F'],['1 2 3 ', '4 5 6 ']]
output = map(as_char, sample_input)
# or
output = [as_char(item) for item in sample_input]

答案 2 :(得分:2)

加入你的子元素,确保在加入时留一个空格然后在空格上拆分以拆分成单个元素并删除任何尾随空格。

print([ " ".join(sub).split() for sub in l])
[['A', 'B', 'C', 'D', 'E', 'F'], ['1', '2', '3', '4', '5', '6']]

如果只有两个子元素解包并使用str.format进行拆分,以便在拆分之间留出空格:

print([ "{} {}".format(a,b).split() for a,b in l ])

[['A', 'B', 'C', 'D', 'E', 'F'], ['1', '2', '3', '4', '5', '6']]

如果您使用列表作为变量名称,那么不要因为您将隐藏内置列表,这通常会导致更多关于SO的问题......

答案 3 :(得分:0)

这个怎么样:

>>> my_list = [['A B C','D E F'],['1 2 3 ', '4 5 6 ']]
>>> map(lambda x:x.split(), map(" ".join, my_list))
[['A', 'B', 'C', 'D', 'E', 'F'], ['1', '2', '3', '4', '5', '6']]