Python 如何使用括号打印换行符中的列表元素?

Python 如何使用括号打印换行符中的列表元素?,python,Python,假设有一个列表demo\u list: [u'demo', u'trial'] 使用for循环打印带有“\n”的每个元素: for i in demo_list: print(i) 它按预期工作: demo trial 但是,我想用括号来表示这个循环: print([ i for i in demo_list]) 但它直接在一行中打印整个列表: [u'demo', u'trial'] 对于表达式[print(i)For i in demo_list],它表示SyntaxErr

假设有一个列表
demo\u list

[u'demo', u'trial']
使用for循环打印带有“\n”的每个元素:

for i in demo_list:
    print(i)
它按预期工作:

demo
trial
但是,我想用括号来表示这个循环:

print([ i for i in demo_list]) 
但它直接在一行中打印整个列表:

[u'demo', u'trial']
对于表达式
[print(i)For i in demo_list]
,它表示
SyntaxError:invalid syntax

我的问题是:

  • 如何使用括号将每个元素放在新行中
  • 表达式
    [在演示列表中为i打印(i)]
    有什么问题
  • 非常感谢您的帮助。

    在使用列表理解(即括号表达式)生成列表后,使用“\n”-换行符和
    连接如何


    一般来说,如果你已经有了列表,就不需要理解列表。使用换行符进行简单的连接操作就可以了

    In [31]: print("\n".join(demo_list)) 
    demo
    trial
    

    它被称为列表理解。不能在列表中使用语句。很明显,如果你这样看:

    [assert x for x in lst]
    
    # same as
    [print x for x in lst]
    
    Python 2.7中的
    打印
    ,但不是函数。因此,这是一个
    语法错误
    。但这是可行的:

    l = [1,2,3]
    
    def p(x):
        print(x)
    
    map(p, l)
    # or
    [p(x) for x in l]
    
    参考资料:

    您也可以这样做:

    In [591]: from __future__ import print_function
    In [592]: print(*demo_list,sep='\n')
    demo
    trial
    
    你可以:

    print(*[i for i in demo_list],sep='\n')
    


    如果您使用的是
    Python2.7
    您应该
    从uuu future\uuuu导入print\u函数

    首先,根据错误消息,您使用的不是python3,而是2.7x。 因为您的代码在python 3中工作

    在Python2.7中,print不是一个函数,而是一个格式为print[,]*的语句。(方括号表示可选参数)

    列表理解也是创建列表的一种方法。最后可能会看到[None,None],因此最好将其指定给变量

    将您的列表修改为:

    def print_stmt(x):
        print x
    
    a = [print_stmt(x) for x in ["demo", "trial"]]
    
    这将打印为:

    demo


    试用版

    如何
    打印('\n'.加入(演示列表)
    ?顺便说一句,
    [print(i)for i in demo_list]
    确实对我有用,但它绝对不被鼓励。@Ev.Kounis感谢您的回复,但它返回
    [u'demo\ntrial']
    。顺便说一句,为什么不鼓励
    [在演示列表中为i打印(i)
    ?这种形式的缺点是什么?括号表达式称为列表理解,因此不鼓励使用理解。你应该改为尝试
    join
    方法。奇怪。。
    类型(demo_list)
    返回什么?@user2894829,因为列表理解不是通用循环工具。它们的存在是为了创建列表。在您的例子中,您正在使用它们的内置列表创建循环机制来打印。这就像用叉子吃汤。为什么你需要理解这个?它不是必需的,但是OP需要这个,因为它说
    ,然而,我想用括号来表达这个循环:
    print(*demo_list, sep='\n')
    
    def print_stmt(x):
        print x
    
    a = [print_stmt(x) for x in ["demo", "trial"]]