Python 嵌套结构:元组列表列表

Python 嵌套结构:元组列表列表,python,list,nested,tuples,Python,List,Nested,Tuples,我正在尝试处理一个嵌套结构,该结构如下所示: list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]] column_to_add = ["string1", "string2", "string3"] [[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("

我正在尝试处理一个嵌套结构,该结构如下所示:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
 column_to_add = ["string1", "string2", "string3"]
[[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("fff", "string3")]]
result= []
for internal_list in list_of_lists:
    for tuple in internal_list:
        for z in tuple:
            for new_string in column_to_add:
                kk=list(tuple)
                result = tuple.append(new_string)
list_of_lists= [[("aaa", ),("bbb", )],[("ccc", ),("ddd", )],[("eee", ),("fff", )]]
我需要添加一列元素,如下所示:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
 column_to_add = ["string1", "string2", "string3"]
[[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("fff", "string3")]]
result= []
for internal_list in list_of_lists:
    for tuple in internal_list:
        for z in tuple:
            for new_string in column_to_add:
                kk=list(tuple)
                result = tuple.append(new_string)
list_of_lists= [[("aaa", ),("bbb", )],[("ccc", ),("ddd", )],[("eee", ),("fff", )]]
最终结果应如下所示:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
 column_to_add = ["string1", "string2", "string3"]
[[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("fff", "string3")]]
result= []
for internal_list in list_of_lists:
    for tuple in internal_list:
        for z in tuple:
            for new_string in column_to_add:
                kk=list(tuple)
                result = tuple.append(new_string)
list_of_lists= [[("aaa", ),("bbb", )],[("ccc", ),("ddd", )],[("eee", ),("fff", )]]
我试过这样的方法:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
 column_to_add = ["string1", "string2", "string3"]
[[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("fff", "string3")]]
result= []
for internal_list in list_of_lists:
    for tuple in internal_list:
        for z in tuple:
            for new_string in column_to_add:
                kk=list(tuple)
                result = tuple.append(new_string)
list_of_lists= [[("aaa", ),("bbb", )],[("ccc", ),("ddd", )],[("eee", ),("fff", )]]
但它似乎根本不起作用。 有人能帮我吗


非常感谢

如果您的数据如下所示:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
 column_to_add = ["string1", "string2", "string3"]
[[("aaa", "string1"),("bbb", "string1")],[("ccc", "string2"),("ddd", "string2")],[("eee", "string3"),("fff", "string3")]]
result= []
for internal_list in list_of_lists:
    for tuple in internal_list:
        for z in tuple:
            for new_string in column_to_add:
                kk=list(tuple)
                result = tuple.append(new_string)
list_of_lists= [[("aaa", ),("bbb", )],[("ccc", ),("ddd", )],[("eee", ),("fff", )]]
你应使用:

[[y + (column_to_add[i], ) for y in x] for i, x in enumerate(list_of_lists)]
这将产生:

#[[('aaa', 'string1'), ('bbb', 'string1')],
# [('ccc', 'string2'), ('ddd', 'string2')],
# [('eee', 'string3'), ('fff', 'string3')]]
输出

[
   [('aaa', 'string1'), ('bbb', 'string1')], 
   [('ccc', 'string2'), ('ddd', 'string2')], 
   [('eee', 'string3'), ('fff', 'string3')]
]

您可以使用列表理解

lst = [[("aaa",), ("bbb",)], [("ccc",), ("ddd",)], [("eee",), ("fff",)]]
col = ["string1", "string2", "string3"]

result = [[(*tup, col[i]) for tup in lst[i]] for i in range(len(lst))]
输出:

[[('aaa', 'string1'), ('bbb', 'string1')], [('ccc', 'string2'), ('ddd', 'string2')], [('eee', 'string3'), ('fff', 'string3')]]
Upd.

使用
col
的长度作为范围限制可能更“安全”

result = [[(*tup, col[i]) for tup in lst[i]] for i in range(len(col))]

您将需要类似于
zip()
的东西

首先,保持
(aaa,bbb)
string1
成对

a=[(“aaa”)、(“bbb”)、[(“ccc”)、(“ddd”)、[(“eee”)、(“fff”)]
b=[“字符串1”、“字符串2”、“字符串3”]
压缩数据=列表(压缩(a,b))
#压缩数据=[(['aaa','bbb'],'string1'),(['ccc','ddd'],'string2'),(['eee','fff'],'string3')]
然后,让
string1
与元组
(aaa,bbb)
的每个迭代器配对

new_list=[]
对于压缩的_数据中的u:
新增_list.append([(u[0][0],u[1]),(u[0][1],u[1]))
打印(新列表)
输出是

[[('aaa', 'string1'), ('bbb', 'string1')], [('ccc', 'string2'), ('ddd', 'string2')], [('eee', 'string3'), ('fff', 'string3')]]

使用
zip
和嵌套列表

Ex:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
column_to_add = ["string1", "string2", "string3"]

print([[(i, n) for i in m] for m,n in zip(list_of_lists, column_to_add)])
[[('aaa', 'string1'), ('bbb', 'string1')],
 [('ccc', 'string2'), ('ddd', 'string2')],
 [('eee', 'string3'), ('fff', 'string3')]]
输出:

list_of_lists= [[("aaa"),("bbb")],[("ccc"),("ddd")],[("eee"),("fff")]]
column_to_add = ["string1", "string2", "string3"]

print([[(i, n) for i in m] for m,n in zip(list_of_lists, column_to_add)])
[[('aaa', 'string1'), ('bbb', 'string1')],
 [('ccc', 'string2'), ('ddd', 'string2')],
 [('eee', 'string3'), ('fff', 'string3')]]

您的逻辑是错误的。对于每个元组,您都要在
列中循环添加
。您希望将
内部\u列表
的每个索引与要添加的
列的匹配索引相匹配。Zipa的答案是通过
enumerate
来实现的,它提供了一个可使用的索引。Rakesh的回答使用了
zip
,它将两个列表拉上拉链,在那里他打开并使用它们。两者都使用列表理解,这类似于for循环,将项目附加到初始空列表,现在更清晰了,所以如果我正确理解,使用zip或enumerate是完全等效的。对吗?它们都创建迭代器(即时生成)对象,创建的对象略有不同,一个(zip)是实际匹配元素的元组,一个是(index,item)元组,让您可以随意使用索引。在这种情况下,我更喜欢enumerate,因为代码更明确。