使用成对的列表列表循环列表

Loop a list with a list of lists in pairs

编辑:在我试图举例说明编码问题时,我在我想要的结果方面犯了一个错误。我已将结果更新为我实际期望的结果。

我有一个名为 list_of_lists_1 的列表列表,我希望与 姊妹列表 (如果这是编码中的术语) 称为 list_of_lists_2,第三个列表称为 person_listlist_of_lists_1list_of_lists_2 在总数和每个列表列表中具有相同数量的元素。 person_list 中的每个元素都应与 list_of_lists_1list_of_lists_2 中的相应列表循环,即 person_a 将与列表 [1, 3, 5][2, 4, 6] 串联循环。正如 persin_b 将循环使用 ["7", "9", "11"]["8", "10", "12"]

# create lists
list_of_lists_1 = [["1", "3", "5"], ["7", "9", "11"], ["13", "15", "17"]]
list_of_lists_2 = [["2", "4", "6"], ["8", "10", "12"], ["14", "16", "18"]]
person_list = ["person_a", "person_b", "person_c"]

我试过下面的代码。然而,输出只共计大约50 pct。期望的结果。

# loop
for i in range(0, len(list_of_lists_1)):

    outcome = person_list[i] + list_of_lists_1[i][i] + list_of_lists_2[i][i]
    
    # some functions and other interesting stuff!

    print(outcome)

person_a12
person_b910
person_c1718
# desired outcome (Has been edited)
person_a12
person_a34
person_a56
person_b78
person_b910
person_b1112
person_c1314
person_c1516
person_c1718

我怎样才能达到预期的结果?

谢谢。

使用zip()并行循环列表。

然后你可以使用嵌套循环来组合list_of_lists_X中嵌套列表的元素。

鉴于:

list_of_lists_1 = [["1", "3", "5"], ["7", "9", "11"], ["13", "15", "17"]]
list_of_lists_2 = [["2", "4", "6"], ["8", "10", "12"], ["14", "16", "18"]]
person_list = ["person_a", "person_b", "person_c"]

您的结果可以通过以下方式构建:

for suffixes_1, suffixes_2, name in zip(list_of_lists_1, list_of_lists_2, person_list):
    for s1, s2 in zip(suffixes_1, suffixes_2):
        outcome = name + s1 + s2
        print(outcome)

@Barmar 的解决方案更简洁一些,但我还是 post 这个。

list_of_lists_1 = [["1", "3", "5"], ["7", "9", "11"], ["13", "15", "17"]]
list_of_lists_2 = [["2", "4", "6"], ["8", "10", "12"], ["14", "16", "18"]]
person_list = ["person_a", "person_b", "person_c"]

for n,p in enumerate(person_list):
    output = p
    for digits in zip(list_of_lists_1[n],list_of_lists_2[n]):
        output += digits[0]+digits[1]
    print(output)

通过扩展@Barmar 的回答 (),这里是您可以如何使用列表理解来做到这一点:

list_of_lists_1 = [["1", "3", "5"], ["7", "9", "11"], ["13", "15", "17"]]
list_of_lists_2 = [["2", "4", "6"], ["8", "10", "12"], ["14", "16", "18"]]
person_list = ["person_a", "person_b", "person_c"]

result = (
    f"{name}{s1}{s2}"
    for suffixes_1, suffixes_2, name in zip(list_of_lists_1, list_of_lists_2, person_list)
    for s1, s2 in zip(suffixes_1, suffixes_2)
)

for outcome in result:
    print(outcome)

给你:

person_a12
person_a34
person_a56
person_b78
person_b910
person_b1112
person_c1314
person_c1516
person_c1718