考虑一下这些表达方式......请耐心等待...这是一个很长的清单......
(注意:重复一些表达式 - 这只是为了呈现"上下文")
a, b = 1, 2 # simple sequence assignment
a, b = ['green', 'blue'] # list asqignment
a, b = 'XY' # string assignment
a, b = range(1,5,2) # any iterable will do
# nested sequence assignment
(a,b), c = "XY", "Z" # a = 'X', b = 'Y', c = 'Z'
(a,b), c = "XYZ" # ERROR -- too many values to unpack
(a,b), c = "XY" # ERROR -- need more than 1 value …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成依赖于小部件的交互式绘图.我遇到的问题是,当我使用滑块更改参数时,会在上一个之后完成新的绘图,而我预计只会根据参数更改一个绘图.
例:
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
def plot_func(freq):
x = np.linspace(0, 2*np.pi)
y = np.sin(x * freq)
plt.plot(x, y)
interact(plot_func, freq = widgets.FloatSlider(value=7.5,
min=1,
max=5.0,
step=0.5))
Run Code Online (Sandbox Code Playgroud)
将滑块移动到4.0后,我有:
虽然我只想在移动滑块时改变一个数字.我怎样才能做到这一点?
(我使用的是Python 2.7,matplotlib 2.0,我刚刚更新了笔记本和jupyter到最新版本.如果需要进一步的信息,请告诉我.)
我正在从三个独立的数据框绘制散点图,并绘制点以及最佳拟合线.我可以使用以下代码完成此操作:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fig=plt.figure()
ax1=fig.add_subplot(111)
ax2=fig.add_subplot(111)
ax3=fig.add_subplot(111)
#create scatter plots from the dataframes
ax1.scatter(ex_x, ex_y, s=10, c='r', label='Fire Exclusion')
ax2.scatter(one_x,one_y, c='b', marker='s',label='One Fire')
ax3.scatter(two_x, two_y, s=10, c='g', marker='^', label='Two Fires')
#plot lines of best fit
ax1.plot(ex_x,ex_results.predict(), color = 'r',label = 'Linear (Fire Exclusion)')
ax2.plot(one_x,one_results.predict(), color = 'b',label = 'Linear (One Fire)')
ax3.plot(two_x,two_results.predict(), color = 'g',label = 'Linear (Two Fires)')
#add legend and axis labels
plt.xlabel('NDVI 2004/07/27')
plt.ylabel('NDVI 2005/07/14')
plt.title('NDVI in …Run Code Online (Sandbox Code Playgroud) 我对Python语法不太熟悉,并且想知道是否有人可以向我解释变量match是如何for对此函数中的表达式中找到的字符串进行的:
def find_project(project_name):
projects = get_projects()
try:
match, = (proj for proj in projects if proj["name"].strip() == project_name)
return match
except ValueError:
return None
Run Code Online (Sandbox Code Playgroud) python try-catch variable-assignment python-2.7 iterable-unpacking
我正在查看我发现的一个有趣的示例脚本(在这个站点,最后一个示例行124),我正在努力理解particles这行中的逗号是什么:
particles, = ax.plot([], [], 'bo', ms=6)
Run Code Online (Sandbox Code Playgroud)
如果省略逗号,脚本将出现错误,但语法(似乎类似于解包语句)对我来说没有多大意义,并且像
a, = [2,3]
Run Code Online (Sandbox Code Playgroud)
失败,这似乎是反对解包理论的论据.
任何见解将不胜感激.
我想知道这段代码中逗号的作用:
line, =
Run Code Online (Sandbox Code Playgroud)
以下示例显示了该行为:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)
print("First:")
print(line)
print("Second:")
line = ax.plot([], [], lw=2)
print(line)
Run Code Online (Sandbox Code Playgroud)
结果:
First:
Line2D(_line0)
Second:
[<matplotlib.lines.Line2D object at 0xb137c4c>]
Run Code Online (Sandbox Code Playgroud)
当我尝试使用行变量时,它真的变得混乱,我不知道是否使用尾随逗号:
def init():
line.set_data([], [])
return line,
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法来避免使用逗号吗?
我想知道是否有人可以向我解释 , 逗号在行中的作用
P, = ax.plot([],[])
Q, = ax.plot([],[])
Qa, =ax.plot([],[])
Run Code Online (Sandbox Code Playgroud)
当我使用没有这些逗号的代码时,我收到一个错误,向我解释列表没有 set_data 属性。我整个上午都在试图破译它,但到目前为止一直无法破译。完整的代码如下。它是运行简短动画的小程序的一部分。感谢你的帮助。
from math import cos, sin , pi
from matplotlib import pyplot as plt
import numpy as np
from matplotlib import animation as anim
theta = np.linspace(0,2*pi, 100)
#psi = pi/3
a = 2
b = 1
x = []
y = []
for angle in theta:
x.append(a*cos(angle))
y.append(b*sin(angle))
fig = plt.figure(figsize=(8,8), dpi=80)
plt.subplot(111)
ax = plt.axes(xlim =(-2.5, 2.5), ylim = ( -2.5, 2.5))
plt.plot(x,y)
P, = …Run Code Online (Sandbox Code Playgroud) 在matplotlib 示例的animate_decay.py中,return语句与尾随逗号一起使用,如下所示:
return line,
Run Code Online (Sandbox Code Playgroud)
并且该函数是普通函数,而不是生成器函数。
所以,我编写了同一个函数的两个版本,一个带有尾随逗号,另一个没有:
def no_trailing_comma(x):
return x + [10]
def trailing_comma(x):
return x + [10],
data = [1, 2, 3]
print("With trailing comma", trailing_comma(data))
print("With no trailing comma", no_trailing_comma(data))
Run Code Online (Sandbox Code Playgroud)
无论哪种情况,输出都是相同的:
尾随逗号 [1, 2, 3, 10]
没有尾随逗号 [1, 2, 3, 10]
语言规范 (Python 3.6) 没有特别提及 return 语句中的尾随逗号。我错过了什么吗?
python ×7
matplotlib ×4
python-2.7 ×2
animation ×1
jupyter ×1
pandas ×1
python-3.x ×1
return ×1
try-catch ×1
tuples ×1