Kri*_*Pal 0 python list iterable-unpacking
我有以下列表:
list = [(1,info1),(2,info2),(3,info3)...]
Run Code Online (Sandbox Code Playgroud)
每个信息都由一个元组列表组成
info1 = [(a1,b1,c1),(a1',b1',c1'),(a1",b1",c1")...]
Run Code Online (Sandbox Code Playgroud)
对于每个元素list,我想要有以下内容:
otherlist = [(1,(a1,b1,c1)),(1,(a1',b1',c1')),(1,(a1",b1",c1"))...]
Run Code Online (Sandbox Code Playgroud)
也就是说:前面的索引info要放在每个信息元组的前面
我认为这是可行的,但我无法用简单的列表理解来实现这一点
谢谢您的帮助 :)
使用嵌套列表理解:
otherlist = [[(L[0], t) for t in L[1]] for L in lst]
Run Code Online (Sandbox Code Playgroud)
所以对于每一个元素L中lst,我们创建的元组包含一个新的列表(L[0], elements of L[1]).
演示:
>>> lst = [(1, [('a1', 'b1', 'c1'), ("a1'", "b1'", "c1'"), ('a1"', 'b1"', 'c1"')]), (2, [('a3', 'b3', 'c3'), ("a3'", "b3'", "c3'"), ('a3"', 'b3"', 'c3"')]), (3, [('a3', 'b3', 'c3'), ("a3'", "b3'", "c3'"), ('a3"', 'b3"', 'c3"')])]
>>> [[(L[0], t) for t in L[1]] for L in lst]
[[(1, ('a1', 'b1', 'c1')), (1, ("a1'", "b1'", "c1'")), (1, ('a1"', 'b1"', 'c1"'))], [(2, ('a3', 'b3', 'c3')), (2, ("a3'", "b3'", "c3'")), (2, ('a3"', 'b3"', 'c3"'))], [(3, ('a3', 'b3', 'c3')), (3, ("a3'", "b3'", "c3'")), (3, ('a3"', 'b3"', 'c3"'))]]
Run Code Online (Sandbox Code Playgroud)