在Python中创建具有多重性的项列表

在Python中创建具有多重性的项列表,python,list,tuples,Python,List,Tuples,我对创建列表有一个问题 我有一个函数,返回多项式的根(见下文)。我得到的是根的列表(R.keys())以及每个根出现在解决方案中的时间(R.values()) 当我获得R.items()时,我得到了一组根对及其重数:[(-2,2),(-1,1),(-3,3)],如下例返回 但我想得到的是一个列表,每个根都按它出现的次数重复,也就是说,[-2,-2,-1,-3,-3] 我想这并不难,但我一直在寻找解决方案 pol=Lambda((y), y**6 + 14*y**5 + 80*y**4 + 238

我对创建列表有一个问题

我有一个函数,返回多项式的根(见下文)。我得到的是根的列表(
R.keys()
)以及每个根出现在解决方案中的时间(
R.values()

当我获得
R.items()
时,我得到了一组根对及其重数:
[(-2,2),(-1,1),(-3,3)]
,如下例返回

但我想得到的是一个列表,每个根都按它出现的次数重复,也就是说,
[-2,-2,-1,-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)

如果您可以以
数组
的形式获取项目列表,那么您可以创建一个
列表
,如下所示:

items = [(-2, 2), (-1, 1), (-3, 3)]
listOfRoots = []
for x in items:
    for y in range(x[1]):
        listOfRoots.append(x[0])
print(listOfRoots)
编辑:函数中已处理的poli,因为您似乎希望将poli传递给它


编辑:增加了代码的解释。

我想你的意思是[-2,-2,-1,-3,-3]

items = [(-2, 2), (-1, 1), (-3, 3)]
result = []
for val, mult in items:
  result.extend(mult * [val])
roots1 = [(-2, 2), (-1, 1), (-3, 3)]
roots2 = [i for (r, m) in roots1 for i in [r] * m]

这可能很有趣:

你是说
[-2,-2,-1,-3,-3]
?什么类型的
R
?例如,什么是
类型(R)
?您使用的是Python 2还是Python 3?是的,
[-2,-2,-1,-3,-3]
,我已经更正了,谢谢。我使用的是Python 2.7,谢谢,这就是我所需要的!
items = [(-2, 2), (-1, 1), (-3, 3)]
result = []
for val, mult in items:
  result.extend(mult * [val])
roots1 = [(-2, 2), (-1, 1), (-3, 3)]
roots2 = [i for (r, m) in roots1 for i in [r] * m]