我有一个像这样的项目列表:
[['1 2 3 4 5', '6 7 8 9 10'], ['1 2 3 4 5', '6 7 8 9 10']]
我想把它变成这个:
[[['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10']],
[['1', '2', '3', '4', '5'],
['6', '7', '8', '9', '10']]
到目前为止,我有这段代码:
for list in mylists[]:
for items in list[]:
items = items.split()
print items
print mylists
我遇到的问题是
print items
打印列表列表应该如何(我希望它看起来如何),然后
print mylists
以原始形式打印列表列表(项目列表的原始列表)。
看起来列表的编辑没有进行,就像编辑超出范围一样。如何让编辑保留?
我知道这段代码看起来很混乱,所以如果你需要澄清那么请注释。
答案 0 :(得分:6)
使用map
或comprehensions构建新列表:
split_mylists = [[e.split() for e in x] for x in mylists]
如果您希望就地编辑,则需要替换内部数组的元素:
mylists = [['1 2 3 4 5', '6 7 8 9 10'], ['1 2 3 4 5', '6 7 8 9 10']]
for sublist in mylists:
for i, items in enumerate(sublist):
sublist[i] = items.split()
print mylists
在你的代码中(如果它在语法上是正确的),你将替换局部变量items
的值,它不反映(有些不幸的名字)列表list
的内容
编辑变量名称更改,并澄清第一个代码段构造新列表。
答案 1 :(得分:1)
问题是您要打印出正在生成的值,但不存储它们以供进一步使用。由于您需要列表列表,因此应该从空列表开始,并在创建时添加每个元素。创建第二级元素还涉及创建第三级元素。
mydata = [['1 2 3 4 5', '6 7 8 9 10'], ['1 2 3 4 5', '6 7 8 9 10']]
outlist = []
for lst in mydata:
level2 = []
for item in lst:
level3 = item.split()
level2.append(level3)
outlist.append(level2)
from pprint import pprint
pprint(outlist)
提供输出
[[['1', '2', '3', '4', '5'], ['6', '7', '8', '9', '10']],
[['1', '2', '3', '4', '5'], ['6', '7', '8', '9', '10']]]