簡體   English   中英

如何使用括號在換行符中打印列表元素?

[英]How to print list elements in newlines using brackets?

假設有一個列表demo_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

我的問題是:

  1. 如何使用括號將每個元素放入新行?
  2. 表達式[print(i) for i in demo_list]什么問題?

任何幫助表示贊賞。

使用列表推導(即括號表達式)生成列表后,如何使用“\\ n” - 帶join換行符?

In [29]: demo_list = [u'demo', u'trial']   

In [30]: print("\n".join([ i for i in demo_list])) 
demo
trial

通常,如果您已經有列表,則不需要列表理解。 使用換行符的簡單連接操作可以正常工作。

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中print但不是函數 所以這是一個SyntaxError 但這有效:

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')

要么

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

如果您使用的是Python2.7 ,則應該from __future__ import print_function

首先,根據錯誤消息,您沒有使用python 3,而是使用2.7x。 因為你的代碼在python 3中工作。

在python 2.7中,print不是函數,而是一個格式為print [,] *的語句。 (方括號表示可選參數)。

列表理解也是一種創建列表的方法。 您可能會在最后看到[無,無],因此最好將其分配給變量。

將列表理解修改為:

def print_stmt(x):
    print x

a = [print_stmt(x) for x in ["demo", "trial"]]

這將打印為:

demo

trial

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM