我已经搜索了各种资源,无法弄清楚如何进行相当简单的操作。
现在,我有一个如下列表:
li = [['a=b'],['c=d']]
我想将其转换为:
li = [['a','b'],['c','d']]
据我了解,split("=")
仅适用于字符串类型。列表是否有等效的方法?
原谅我问题的简单性......
-Dan
答案 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]