【问题标题】:Not able to print list elements in for loop [duplicate]无法在 for 循环中打印列表元素 [重复]
【发布时间】:2022-01-23 03:27:18
【问题描述】:

我有以下清单:

result_lines = ['hello', 'bye']

我试图形成一个单行来打印列表的元素,如下所示:

print(line for line in result_lines)

预期结果:

你好

再见

输出(我得到的):

编辑:

另外,上述方法与:

for line in result_lines:
    print(line)

我无法弄清楚为什么会这样。任何帮助表示赞赏。

【问题讨论】:

  • 将 print 中的所有内容括在括号中,因此例如 print([line for line in result_lines]) 应该可以工作。欲了解更多信息,请查看list compehensions
  • line for line in result_lines 是一个生成器表达式,因此它会打印由该表达式创建的生成器对象的表示。由于您要打印生成器的每个元素,请使用括号将其展开为序列。请注意,您只需 print(result_lines) 即可获得相同的结果
  • 您的问题标题为“无法在 for 循环中打印列表元素”;但是您向我们展示了 不是 for 循环 的代码并抱怨它没有给您所需的输出,然后您展示了 is for 循环的代码并且 确实有效。

标签: python list generator


【解决方案1】:

如您所见,您有一个生成器。您需要从生成器创建一个列表。

print([line for line in result_lines])

print(list(line for line in result_lines))

另外,这里不需要生成器/循环,你可以这样做

print(result_lines)

【讨论】:

    【解决方案2】:

    你可以这样试试,

    result_lines = ['hello', 'bye']
    print(*result_lines, sep = "\n")
    

    使用 * 传递所有元素而不将它们绑定到列表中,并使用 sep="\n" 将每个元素放到下一行。

    【讨论】:

      【解决方案3】:

      Python 中,如果你想使用list comprehension,你必须添加方括号,像这样......

      list_ = [element for element in iterable]
      

      ...相当于...

      list_ = list(element for element in iterable)
      

      ...到...

      list_ = [] # equivalent to list()
      for element in iterable:
          list_.append(element)
      

      在这种情况下,您必须添加方括号,如下所示:

      print([line for line in result_lines])
      

      但是你也可以使用built-in函数print来解决你的问题,像这样:

      print(*result_lines, sep='\n')
      

      因为在 Python 中,您可以使用 * 运算符将可迭代对象转换为可打印的可迭代对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 1970-01-01
        相关资源
        最近更新 更多