gpt4 book ai didi

python - 如何将字符串列表与整数列表列表组合起来

转载 作者:行者123 更新时间:2023-12-01 08:47:19 26 4
gpt4 key购买 nike

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

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 中重复的字符串条目,使用字典策略是不可能的。

我尝试了以下方法,它仅适用于 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 整数列表,但只是部分组合。

最佳答案

您尝试使用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))

关于python - 如何将字符串列表与整数列表列表组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com