在python列表中组合和循环

在python列表中组合和循环,python,Python,我们如何进行输出: first_name = ["Johnny", "Joseph", "Mary"] third_name = ["Mendez", "Nash", "Johanson"] second_name = ["John", "Allen", "Ann"] for i in first_name: for x in second_name: for y in third_name: names = i + x + y 因为当我在所

我们如何进行输出:

first_name = ["Johnny", "Joseph", "Mary"]
third_name = ["Mendez", "Nash", "Johanson"]
second_name = ["John", "Allen", "Ann"]


for i in first_name:
    for x in second_name:
        for y in third_name:
            names = i + x + y
因为当我在所有的列表中循环时,我得到了混乱的名字。我们怎样才能确定名字的顺序<代码>第一名第二名第三名使用:

zip
函数同时遍历三个列表,并在每次迭代时从每个列表中获取相应的元素。

使用:

zip
函数同时遍历三个列表,并在每次迭代时从每个列表中获取相应的元素。

使用并:

REPL中的示例:

map(" ".join, zip(first_names, second_names, third_names))
然后您可以创建一个可能在其他地方使用的函数:

>>> map(" ".join, zip(["A", "B", "C"], ["a", "b", "c"], ["1", "2", "3"]))
['A a 1', 'B b 2', 'C c 3']
或者更一般的,不硬编码确切的三个名称部分:

def make_names(first_names, second_names, third_names):
    return map(" ".join, zip(first_names, second_names, third_names))
REPL示例:

def make_names(*args):
    return map(" ".join, zip(*args))
使用和:

REPL中的示例:

map(" ".join, zip(first_names, second_names, third_names))
然后您可以创建一个可能在其他地方使用的函数:

>>> map(" ".join, zip(["A", "B", "C"], ["a", "b", "c"], ["1", "2", "3"]))
['A a 1', 'B b 2', 'C c 3']
或者更一般的,不硬编码确切的三个名称部分:

def make_names(first_names, second_names, third_names):
    return map(" ".join, zip(first_names, second_names, third_names))
REPL示例:

def make_names(*args):
    return map(" ".join, zip(*args))

如果您的列表大小不相等,这将起作用

>>> make_names(["a"])
['a']
>>> make_names(["a"], ["b"])
['a b']
>>> make_names(["a"], ["b"], ["c"], ["d"])
['a b c d']
>>> make_names(["Johnny", "Joseph", "Mary"], ["Mendez", "Nash", "Johanson"], ["John", "Allen", "Ann"])
['Johnny Mendez John', 'Joseph Nash Allen', 'Mary Johanson Ann']

如果您的列表大小不相等,这将起作用

>>> make_names(["a"])
['a']
>>> make_names(["a"], ["b"])
['a b']
>>> make_names(["a"], ["b"], ["c"], ["d"])
['a b c d']
>>> make_names(["Johnny", "Joseph", "Mary"], ["Mendez", "Nash", "Johanson"], ["John", "Allen", "Ann"])
['Johnny Mendez John', 'Joseph Nash Allen', 'Mary Johanson Ann']

这意味着我不使用for循环?哇,我不知道zip,非常感谢,这意味着我不使用for循环?哇我不知道zip的事谢谢much@HalcyonAbrahamRamirez将函数和iterable作为参数,并为iterable中的每个元素调用函数,返回结果列表。这里有一个简单的例子。嘿,我看了你的代码,它产生了这个“为什么?”嘿@HalcyonAbrahamRamirez这大概是“列表”的生成器。这是Python可以实现的性能优化。你仍然可以迭代这个东西,它的行为就像一个列表。尝试
list(map(“.”join,zip([“A”,“B”,“C”],[“A”,“B”,“C”],[“1”,“2”,“3”]))
list(无论什么)
来实际创建列表对象。例如,如果您有一个类似“无限列表”的东西,那么使用生成器时,您不需要将整个列表存储在内存中(这对于无限列表是不可能的)。但是您仍然可以给出下一个元素。您实际使用的Python版本是什么?您计算的表达式是什么?在任何情况下,结果都无关紧要,但Python可能会通过创建更高性能的东西来帮助您。它的性能也应该比使用
for
循环的版本更好,但是我还没有测试过。@HalcyonAbrahamRamirez将函数和iterable作为参数,并为iterable中的每个元素调用函数,返回结果列表。这里有一个简单的例子。嘿,我看了你的代码,它产生了这个“为什么?”嘿@HalcyonAbrahamRamirez这大概是“列表”的生成器。这是Python可以实现的性能优化。你仍然可以迭代这个东西,它的行为就像一个列表。尝试
list(map(“.”join,zip([“A”,“B”,“C”],[“A”,“B”,“C”],[“1”,“2”,“3”]))
list(无论什么)
来实际创建列表对象。例如,如果您有一个类似“无限列表”的东西,那么使用生成器时,您不需要将整个列表存储在内存中(这对于无限列表是不可能的)。但是您仍然可以给出下一个元素。您实际使用的Python版本是什么?您计算的表达式是什么?在任何情况下,结果都无关紧要,但Python可能会通过创建更高性能的东西来帮助您。它的性能也应该比使用
for
循环的版本更好,但是我还没有测试过。