从Python中的常规间隔列表中提取整数项

时间:2013-05-28 14:47:27

标签: python

我正在尝试提取python中csv列表中的每个整数,它可以采用不同的形式:

[[0, 3], [1, 2], [2, 1], [3, 0]]

[[0, 0, 3], [0, 1, 2], [0, 2, 1], [0, 3, 0], [1, 0, 2], [1, 1, 1], [1, 2, 0], [2, 0, 1], [2, 1, 0], [3, 0, 0]]

甚至只是

[[2]]

我想做的是从每个元素中提取每个整数,并将其附加到x,即我的第一个列表生成[x03, x12, x21, x30],或者第二个生成[x003, x021, x021, x030, x102, ....]

我一直这样做

  for i in range(len(gmomvec)):
    string=str(gmomvec[i])
    num=string[1::3]
    mm.append(Symbol('x'+num))
    ]

其中gmomvec是列表的名称,mm是我希望获得的结果列表。 但是我刚刚意识到这对于每个列表元素中有2个整数的情况给出了错误的结果。 有谁知道如何使用其他功能来做我想做的事情?

谢谢!

1 个答案:

答案 0 :(得分:4)

使用list comprehensionstr.join()

>>> lis = [[0, 3], [1, 2], [2, 1], [3, 0]]
>>> ["x" + "".join(map(str,x))  for x in lis]
['x03', 'x12', 'x21', 'x30']

>>> lis = [[0, 0, 3], [0, 1, 2], [0, 2, 1], [0, 3, 0], [1, 0, 2], [1, 1, 1], [1, 2, 0], [2, 0, 1], [2, 1, 0], [3, 0, 0]]
>>> ["x" + "".join(map(str,x))  for x in lis]
['x003', 'x012', 'x021', 'x030', 'x102', 'x111', 'x120', 'x201', 'x210', 'x300']

map(str, sequence)str函数应用于序列的每个元素,以便可以使用str.join连接它们

>>> map(str, [1,2,3])
['1', '2', '3']