假设有一个列表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
。
我的问题是:
[print(i) for i in demo_list]
有什么问题?感谢您的帮助。
答案 0 :(得分:1)
使用列表理解(即 bracket 表达式)生成列表后,如何在join
中使用“ \ n”-换行符和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
通常,如果您已经有了列表,则无需理解列表。使用换行符char进行简单的联接操作会很好。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
url = 'http://abacus.realendpoints.com/ConsoleTemplate.aspx?act=qlrd&req=nav&mop=abacus!main&pk=ed5a81ad-9367-41c8-aa6b-18a08199ddcf&ab-eff=1000&ab-tox=0.1&ab-nov=1&ab-rare=1&ab-pop=1&ab-dev=1&ab-prog=1.0&ab-need=1&ab-time=1543102810'
d = webdriver.Chrome()
actions = ActionChains(d)
d.get(url)
paths = WebDriverWait(d,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".highcharts-grid highcharts-yaxis-grid path")))
results = []
for path in paths:
actions.move_to_element(path).perform()
actions.click_and_hold(path).perform()
items = d.find_elements_by_css_selector('#priceChart path + text tspan')
result = [item.text for item in items]
if result:
results.append(result)
d.close()
print(results)
答案 1 :(得分:1)
这称为列表理解。您不能在列表理解中使用声明。很明显,如果您以这种方式看到:
[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]
答案 2 :(得分:1)
您也可以这样做:
In [591]: from __future__ import print_function
In [592]: print(*demo_list,sep='\n')
demo
trial
答案 3 :(得分:1)
您可以:
print(*[i for i in demo_list],sep='\n')
或
print(*demo_list, sep='\n')
如果您使用的是Python2.7
,则应该使用from __future__ import print_function
。
答案 4 :(得分:1)
首先,根据错误消息,您未使用python 3,而是2.7x。 因为您的代码可在python 3中使用。
在python 2.7中,print不是函数,而是格式为print [,] *的语句。 (方括号表示可选参数)。
列表理解也是一种创建列表的方法。您可能会在末尾看到[None,None],因此最好将其分配给变量。
将列表理解修改为:
def print_stmt(x):
print x
a = [print_stmt(x) for x in ["demo", "trial"]]
这将打印为:
demo
trial