拆分列表

时间:2010-08-03 22:10:06

标签: python

我已经搜索了各种资源,无法弄清楚如何进行相当简单的操作。

现在,我有一个如下列表:

li = [['a=b'],['c=d']]

我想将其转换为:

li = [['a','b'],['c','d']]

据我了解,split("=")仅适用于字符串类型。列表是否有等效的方法?

原谅我问题的简单性......

-Dan

6 个答案:

答案 0 :(得分:10)

你想要这个:

[x[0].split('=') for x in li]
# prints [['a', 'b'], ['c', 'd']]

要从帖子的下方评论中获取问题,x [0]的拆分原因是x表示内部列表。这是由for x in li完成的。此外,由于我已将示例分配给我的系统上名为“test”的变量,因此我修复了我的for x in li而不是for x in test

答案 1 :(得分:3)

您可以使用map()

>>> li = [['a=b'],['c=d']]
>>> map(lambda x: x[0].split('='), li)
[['a', 'b'], ['c', 'd']]

这遍历列表li并将lambda函数应用于每个元素。由于列表中的每个元素都是一个包含一个元素的列表,x[0]接受此元素(这是一个字符串),将其拆分并返回包含两个值的新列表。

答案 2 :(得分:0)

警告 - 自从我做了任何python以来已经有一段时间了,但你的问题更为普遍。

你是正确的,因为分割适用于字符串。

您需要做的是拆分列表中包含的VALUE而不是列表本身。

所以你会做类似

的事情
newValue = split('=', li[0][0]) 
li[0] = newValue

答案 3 :(得分:0)

这是你在找什么? map(lambda y:y.split('='),map(lambda x:x[0], li))

答案 4 :(得分:0)

假设每个子列表由a=b形式的单个字符串组成:

>>> [el[i].split('=') for el in li for i in range(len(el))]
[['a', 'b'], ['c', 'd']]

(的确,你要拆分的是内部字符串a=b。所以split()字符串方法工作正常。)

编辑:这种双重列表理解的一种更优雅的方式是:

>>> [a.split('=') for el in li for a in el]
[['a', 'b'], ['c', 'd']]

已经提出了许多好的建议,因此OP应该能够为它学习大量的Python。重要的是要记住的是,拆分的是li [i] [j],即列表项目列表中的项目。

答案 5 :(得分:0)

你可以这样做:

[k[0].split("=") for k in li]