当前位置: 首页 > 知识库问答 >
问题:

如何让嵌套循环函数遍历整个(至少2个)列表变量并附加到新的列表输出?

赖运珧
2023-03-14

我正在尝试编写一个函数,它包含两个列表变量,即名字姓氏

我在函数中使用嵌套的for循环来遍历两个列表,并追加值以返回一个新的“组合”变量列表。

该函数接受两个列表参数,但只迭代每个列表的第一个索引值[0],并输出该值——循环结束。

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names,last_names):
    combined = []
        for first in first_names:
            for last in last_names:
                combined.append(first+last)
                return combined

print(NameCombine(first_names,last_names))

预期输出:DaveSmith、JamesJones、SteveJackson

实际输出:DaveSmith

我期待一个新的组合列表,包括每个索引中的第一个和最后一个名字。

但它返回每个列表的前两个值,然后循环结束。

共有3个答案

康言
2023-03-14

pythonic和list理解是我的首选方式。但是如果你真的想要一个使用嵌套循环的解决方案,这对你来说是可行的。只是使用了你的代码,并添加了一个附加条件,只打印所需的结果。

这个解决方案的结果是:['DaveSmith','JamesJones','SteveJackson']

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names,last_names):
  combined = []
  for first in first_names:
    for last in last_names:
      if first_names.index(first) == last_names.index(last):
        combined.append(first+last)
  return combined

print(NameCombine(first_names,last_names))
裴兴学
2023-03-14

你可以试试这个代码。

first_names = ["Dave", "James", "Steve"]

last_names = ["Smith", "Jones", "Jackson"]

def NameCombine(first_names, last_names):
    combined = []
    for i in range(0, len(first_names)):
        if last_names[i] != None:
            combined.append(first_names[i] + " " + last_names[i])
        else:
            combined.append(first_names[i])
    return combined

print(NameCombine(first_names,last_names))
周阳成
2023-03-14

您可以在理解范围内将它们与zip结合使用:

def NameCombine(first_names,last_names):
    return [a+b for a, b in zip(first_names, last_names)]
 类似资料:
  • 问题内容: 在Python中有两个可迭代的对象,我想成对地讨论它们: 导致: 一种方法是遍历索引: 问题答案: Python 3 当或的较短者停止时,停止。 在Python 3 中,像在Python2中一样,返回元组的迭代器。要获取元组列表,请使用。要压缩直到两个迭代器都用尽,可以使用 。 Python 2 在Python 2中, 返回一个元组列表。当且不是很大时,这很好。如果它们都是大量的,则形

  • 问题内容: 以下是提供输出的代码段:。由于访问列表中的数字3,我期望获得输出。在线给出的解释是“每次迭代中更改的价值”,但我不太了解如何或为什么。任何解释都很好! 问题答案: 这里发生的是一个列表在循环过程中发生了变异。 让我们考虑以下代码片段: 输出为: 每次迭代: 从内部指针当前指向的位置读取值 立即将其分配给列表中的最后一个元素 在最后一个元素打印在标准输出上之后 就像这样: 内部指针指向第

  • //两个列表如何遍历输出1 5 2 6 3 7 4 8

  • 问题内容: 我有两个列表和数字,我想使用相同的指令遍历它们。像这样: 但这感觉多余。我知道我会写,但是要付出一定的时间。 有没有办法做到这一点而又不浪费时间呢? 问题答案: 这可以通过以下方式完成 : 将打印: 根据文档,请执行以下操作: 创建一个迭代器,该迭代器从第一个可迭代对象返回元素,直到耗尽为止,然后继续进行下一个可迭代对象,直到所有可迭代对象都耗尽为止。 如果列表中有列表, 则可用: 产

  • 问题内容: 我敢肯定有一个简单而明显的方法可以做到这一点,但是我一直在谷歌搜索和阅读文档,但是我什么都找不到。 这是我要实现的目标: 我有一个日期列表,其中一些带有标记。然后,我有一个更大的日期列表,我想将最小的列表尽可能多地放入更大的列表中。由于我需要访问较大列表中的日期才能获得最终结果,因此可能需要某种循环。 出于某种原因,我只是看不到执行此操作的好方法。 问题答案: 尝试

  • 我正在做一个Java练习,要求我遍历arraylist中的每个数字,并为每个数字插入数字加1到列表的下一个位置。完成后返回结果列表。如果提供的列表中没有元素,直接抛出IllegalArgumentException。 这是我到目前为止的代码。我做了抛出异常并遍历列表,我在该列表的找到整数中添加1。但是我不知道如何返回最新的列表,我也不确定我的想法是否正确。感谢您的任何帮助/提示!