打印数组以了解列表

时间:2019-05-02 10:13:43

标签: python-3.x

打印必须位于数组中

此代码与下面的代码失败:

print(num) for num in [1,2,3,4]

一种有效的方法:

[print(num) for num in [1,2,3,4]]

为什么第一个失败?

4 个答案:

答案 0 :(得分:1)

这个[print(num) for num in [1,2,3,4]]是一种理解,正是 list 的一种理解,它会根据表达式建立一个列表,您不应该使用它,因为print返回{{ 1}},因此您将建立一个没有内容的列表。

另一个是完全无效的python sintax None,正确的sintax是:

print(num) for num in [1,2,3,4]

答案 1 :(得分:1)

第一个示例由于存在语法错误而失败,因此仅适用于普通的for循环

for num in [1,2,3,4]:
    print(num)

对于列表理解,您的表达式必须像第二个示例一样放在for num in [1,2,3,4]: print(num) [

]

还要注意,对于不返回值的函数(例如[print(num) for num in [1,2,3,4]] )来说,列表理解是错误的选择,因为这样做会在print上创建数组。

None

答案 2 :(得分:0)

print(num) for num in [1,2,3,4]的语法错误。

如果您不使用列表推导,则应使用具有以下语法的循环来遍历列表:

for num in [1,2,3,4]:
    print(num)

实质上,列表推导是Python中的特殊语法工具,而不是各种常规代码表示形式。

答案 3 :(得分:0)

此答案仅用于一般信息,并不建议实际上将生成器或理解力用于此类简单任务

第一个失败,因为它不是有效的语法。

如果用括号括起来,它将成为生成器:

g = (print(num) for num in [1, 2, 3, 4])
print(g)
# <generator object <genexpr> at 0x0000025F231C8408>

但是请注意,由于生成器是惰性的,因此没有打印任何内容。直到完全必要时,才对它们进行评估。

在这种情况下,评估g的一种方法是将其传递给list

print(list(g))
#  1
#  2
#  3
#  4
#  [None, None, None, None]

请注意,这很浪费。 print返回None,因此我们实际上是在建立一无所有的列表。

您可以使用next来代替构建列表:

g = (print(num) for num in [1, 2, 3, 4])

while True:
    try:
        next(g)
    except StopIteration:
        break
# 1
# 2
# 3
# 4

但是不要这样做。所有这些“解决方案”都滥用了更为复杂的语言机制,只是为了打印数字列表。只需遵循其他答案中建议的显式for循环即可。