函数内部的for循环
我还在学习Python,想知道怎么让下面的代码正常运行:
a_function(
for n,item in enumerate(list):
inside_function(code code code,
code code code,
code code code))
这里有一个函数嵌套在另一个函数里面,我需要多次运行里面的那个函数,但外面的那个函数只想运行一次。因为我在用的代码不是我写的,所以我不能随便改动这些函数的工作方式。
如果有人需要,我可以提供实际的代码,这段代码来自PyChart。
编辑:实际代码:
ar = area.T(y_coord = category_coord.T(data, 0),
x_grid_style=line_style.gray50_dash1,
x_grid_interval=chartlength/5, x_range = (0,chartlength),
x_axis=axis.X(label="X label"),
y_axis=axis.Y(label="Y label"))
chart_object.set_defaults(interval_bar_plot.T, direction="horizontal",
width=5, cluster_sep = 0, data=data)
ar.add_plot(
for n,item in enumerate(compactlist):
interval_bar_plot.T(line_styles = [None, None],
fill_styles = [fill_style.red, None],
label=compactlist[n], cluster=(n,len(compactlist)))
)
can = canvas.default_canvas()
can.set_title("Chromosome comparison")
can.set_author("Foo")
ar.draw()
ar.add_plot这个函数是用来在画布上创建一个工作区域的(我理解是这样),而interval_bar_plot函数是一个一个地创建条形图。所以我需要多次调用interval_bar_plot函数,但只想调用一次add_plot函数,否则它就会把第一个条形图重复n次。
编辑:还有错误信息:
File "intvlbar.py", line 105
for n,item in enumerate(compactlist):
^
SyntaxError: invalid syntax
2 个回答
0
你遇到的错误是因为 for
循环本身不返回任何东西。但是这个 for
循环放在了函数调用 ar.add_plot()
里面,而这个地方应该是放参数的。所以 Python 在告诉你:“ar.add_plot()
需要参数,但这个 for
循环并没有给我提供这些参数。”
ar.add_plot()
需要什么参数呢?
你需要一些更接近这个的东西(虽然这可能不完全正确):
ar.add_plot()
for n,item in enumerate(compactlist):
interval_bar_plot.T(line_styles = [None, None],
fill_styles = [fill_style.red, None],
label=compactlist[n], cluster=(n,len(compactlist)
4
你想做的是把几个条形图对象传递给 add_plot
方法(具体说明可以在 这里找到)。一种方法是逐个明确地传递它们。例如:
ar.add_plot(bar1, bar2, bar3)
在 PyChart 文档的示例代码部分,你可以找到关于 条形图 和 区间条形图 的例子。
不过,你可能不想这样做,因为你的 compactlist
可能会很长,或者在不同的运行中长度不一致。另一种选择是使用 参数解包。你可以创建一个包含条形图对象的列表:
bars = [interval_bar_plot.T(line_styles = [None, None],
fill_styles = [fill_style.red, None],
label=compactlist[n], cluster=(n,len(compactlist)))
for n,item in enumerate(compactlist)]
然后用你的 bars
来调用 add_plot
:
ar.add_plot(*bars)