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)]
有什么问题连接如何
一般来说,如果你已经有了列表,就不需要理解列表。使用换行符进行简单的连接操作就可以了
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"]]