Plotting python 对象属性和对象存储在列表中
Plotting python object attribute and objects are stored in list
我将对象存储在 python 中名为 lst 的列表中。我只需要绘制一个对象属性作为绘图。
import numpy as np
import matplotlib.pyplot as plt
class Particle(object):
def __init__(self, value = 0, weight = 0):
self.value = value
self.weight = weight
lst = []
for x in range(0,10):
lst.append(Particle(value=np.random.random_integers(10), weight = 1))
我试过这个并且有效,但我认为这不是很 'pythonic' 方式:
temp = [] #any better idea?
for x in range(0,len(lst)):
temp.append(l[x].value)
plt.plot(temp, 'ro')
你有什么建议,如何以更 pythonic 的方式拆分它?
谢谢
使用 list comprehension 生成您的值列表。
import numpy as np
import matplotlib.pyplot as plt
class Particle(object):
def __init__(self, value = 0, weight = 0):
self.value = value
self.weight = weight
lst = []
for x in range(0,10):
lst.append(Particle(value=np.random.random_integers(10), weight = 1))
values = [x.value for x in lst]
plt.plot(values, 'ro')
plt.show()
列表理解等价于以下代码:
values = []
for x in lst:
values.append(x.value)
请注意,您还可以使用另一个列表理解来整理 lst
集合的创建
lst = [(Particle(value=np.random.random_integers(10), weight=1) for _ in range(10)]
我将对象存储在 python 中名为 lst 的列表中。我只需要绘制一个对象属性作为绘图。
import numpy as np
import matplotlib.pyplot as plt
class Particle(object):
def __init__(self, value = 0, weight = 0):
self.value = value
self.weight = weight
lst = []
for x in range(0,10):
lst.append(Particle(value=np.random.random_integers(10), weight = 1))
我试过这个并且有效,但我认为这不是很 'pythonic' 方式:
temp = [] #any better idea?
for x in range(0,len(lst)):
temp.append(l[x].value)
plt.plot(temp, 'ro')
你有什么建议,如何以更 pythonic 的方式拆分它? 谢谢
使用 list comprehension 生成您的值列表。
import numpy as np
import matplotlib.pyplot as plt
class Particle(object):
def __init__(self, value = 0, weight = 0):
self.value = value
self.weight = weight
lst = []
for x in range(0,10):
lst.append(Particle(value=np.random.random_integers(10), weight = 1))
values = [x.value for x in lst]
plt.plot(values, 'ro')
plt.show()
列表理解等价于以下代码:
values = []
for x in lst:
values.append(x.value)
请注意,您还可以使用另一个列表理解来整理 lst
集合的创建
lst = [(Particle(value=np.random.random_integers(10), weight=1) for _ in range(10)]