我有一个嵌套列表:
[ [ 'col1',
'col2',
'col3',
'col4',
'some comment',
'another comment'],
[ 'col1',
'col2',
'col3',
'col4',
'someone said something',
'a comment here',
'more blah blah']
]
我正在寻找一种更优雅,更灵巧的方式来结束:
[ [ 'col1', 'col2', 'col3', 'col4', 'some comment'],
[ 'col1', 'col2', 'col3', 'col4', 'another comment'] ],
[ 'col1', 'col2', 'col3', 'col4', 'someone said something'],
[ 'col1', 'col2', 'col3', 'col4', 'a comment here']
[ 'col1', 'col2', 'col3', 'col4', 'more blah blah']
比我到目前为止所做的那样。
col1
,col2
,
等等)。 答案 0 :(得分:0)
假设您当前的列表位于名为old_list
的变量中:
base = old_list[0][:4]
new_list = []
for line in old_list:
for comment in line[4:]:
new_list.append(base + [comment])
答案 1 :(得分:0)
使用for循环和切片:
l = [ [ 'col1',
'col2',
'col3',
'col4',
'some comment',
'another comment'],
[ 'col1',
'col2',
'col3',
'col4',
'someone said something',
'a comment here',
'more blah blah']
]
o = []
for e in l:
for p in e[4:]:
o.append(e[:4]+[p])
o
的结果是:
[['col1', 'col2', 'col3', 'col4', 'some comment'],
['col1', 'col2', 'col3', 'col4', 'another comment'],
['col1', 'col2', 'col3', 'col4', 'someone said something'],
['col1', 'col2', 'col3', 'col4', 'a comment here'],
['col1', 'col2', 'col3', 'col4', 'more blah blah']]
上述循环的理解版本是:
o = [e[:4]+[p] for p in e[4:] for e in l]
答案 2 :(得分:0)
嵌套循环结构是您想要的,可以通过嵌套循环理解轻松处理
[inner[0:4] + [rest] for rest in inner[4:] for inner in in_lst]
这里唯一的技巧是了解数据布局和预期的布局,并确定可以实现的映射,
即给出
[ [ 'col1',
'col2',
'col3',
'col4',
'some comment',
'another comment'],
[ 'col1',
'col2',
'col3',
'col4',
'someone said something',
'a comment here',
'more blah blah']
]
将输入数据的行划分为两组
[[['col1', 'col2', 'col3', 'col4'],
['some comment', 'another comment']],
[['col1', 'col2', 'col3', 'col4'],
['someone said something', 'a comment here', 'more blah blah']]]
并循环使用第一个组项目
扩充第二个组项目中的所有项目