如何将字符串列表与整数列表列表相结合

我想结合以下字符串列表和列表的整数列表:


lst = ['A', 

       'A', 

       'B', 

       'C', 

       'C', 

       'D', 

       'D', 

       'D',....]


lst_of_lst = [[9, 10, 11, 12],

              [54, 55, 56],

              [72, 73, 74, 75, 76], 

              [1, 2, 3, 4, 5],

              [98, 99, 100],

              [13, 14],

              [21, 22, 23],

              [27, 28, 29, 30], ....]

从而返回元组列表:


lst_tups = [('A', 9), ('A', 10), ('A', 11), ('A', 12),

            ('A', 54), ('A', 55), ('A', 56), 

            ('B', 72), ('B', 73), ('B', 74), ('B', 75), ('B', 76),

            ('C', 1), ('C', 2), ('C', 3), ('C', 4), ('C', 5), 

            ('C', 98), ('C', 99), ('C', 100), 

            ('D', 13), ('D', 14),

            ('D', 21), ('D', 22), ('D', 23),

            ('D', 27), ('D', 28), ('D', 29), ('D', 30), ....]

这 2 个列表具有相同数量的列表元素(在上面的测试用例中 - 8)。不幸的是,由于lst.


我尝试了以下方法,它仅适用于 in 中的每个子列表的第一个元素,lst_of_lst并对中的每个字符串重复lst:


empty_test_combo = []

for x in helix_chain_id:

    for y in helix_seq_res_num_ranges:

        empty_test_combo += (zip(x, y))

我也试过:


lst_tups = []

for x in lst:

    for y in lst_of_lst:

        for z in y:

            lst_tups.append(zip(x, [z]))

这似乎是最有希望的选择。它返回一个正确组合lst字符串和lst_of_lst整数列表的元组列表,但只是部分组合。


慕桂英546537
浏览 120回答 1
1回答

人到中年有点甜

您尝试使用的方式似乎存在误解zip。zip(list1, list2)是一个迭代器。当您对其进行迭代时,您会得到元组:第一个由 的第一项list1和 的第一项组成list2,依此类推。您在这里要做的是将 的zip(lst, lst_of_lst)每个元素lst与 的相应子列表配对lst_of_lst。从每一对中,您可以生成所需的输出。您可以使用列表理解来做到这一点:lst = ['A', 'A', 'B', 'C', 'C', 'D', 'D', 'D',]lst_of_lst = [[9, 10, 11, 12],              [54, 55, 56],              [72, 73, 74, 75, 76],               [1, 2, 3, 4, 5],              [98, 99, 100],              [13, 14],              [21, 22, 23],              [27, 28, 29, 30],]out = [(item1, item2) for item1, sublist in zip(lst, lst_of_lst) for item2 in sublist]print(out)# [('A', 9), ('A', 10), ('A', 11), ('A', 12), ('A', 54), ('A', 55), ('A', 56), #  ('B', 72), ('B', 73), ('B', 74), ('B', 75), ('B', 76), ('C', 1), ('C', 2), ('C', 3), ('C', 4), ('C', 5),#  ('C', 98), ('C', 99), ('C', 100), ('D', 13), ('D', 14), ('D', 21), ('D', 22), ('D', 23), #  ('D', 27), ('D', 28), ('D', 29), ('D', 30)]或者,用循环编写,正如您所尝试的:out = []for item1, sublist in zip(lst, lst_of_lst):    for item2 in sublist:        out.append((item1, item2))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python