我在创建列表时遇到了问题。
我有一个返回多项式根的函数(见下文)。我获得的是一个根列表(R.keys()
)以及每个根在解决方案中出现的时间(R.values()
)。
当我获得R.items()
时,我会得到一组根和它们的多重性:[(-2, 2), (-1, 1), (-3, 3)]
,如下例所示。
但我想要的是获得一个列表,其中每个根重复出现的次数,即[-2, -2, -1, -3, -3, -3]
。
我想这并不难,但我一直在寻找解决方案。
pol=Lambda((y), y**6 + 14*y**5 + 80*y**4 + 238*y**3 + 387*y**2 + 324*y + 108)
poli=Poly(pol(y))
R=roots(poli)
R.keys()
R.values()
R.items()
def list_of_roots(poli):
return(R.items())
list_of_roots(poli)
答案 0 :(得分:0)
如果您能够以Array<Tuple>
的形式获取商品列表,那么您可以像这样创建list
:
items = [(-2, 2), (-1, 1), (-3, 3)]
listOfRoots = []
for x in items:
for y in range(x[1]):
listOfRoots.append(x[0])
print(listOfRoots)
答案 1 :(得分:0)
roots = [(-2, 2), (-1, 1), (-3, 3)]
[ r for (root, mult) in roots for r in [root] * mult]
[-2, -2, -1, -3, -3, -3]
答案 2 :(得分:0)
def get_list_of_roots(poli):
# initialize an empty list
list_of_roots = []
# process your poli object to get roots
R = roots(poli)
# we obtain the key value pairs using R.items()
for root, multiplicity in R.items():
# extend the list_of_roots with each root by multiplicity amount
list_of_roots += [root] * multiplicity
return list_of_roots
编辑:在函数内处理poli,因为你似乎想要将poli传递给它。
编辑:添加了代码说明。
答案 3 :(得分:0)
items = [(-2, 2), (-1, 1), (-3, 3)]
result = []
for val, mult in items:
result.extend(mult * [val])
答案 4 :(得分:0)
我假设你的意思是[-2,-2,-1,-3,-3,-3]。
roots1 = [(-2, 2), (-1, 1), (-3, 3)]
roots2 = [i for (r, m) in roots1 for i in [r] * m]