2013-05-28 9 views
1

Я пытаюсь извлечь каждое целое число в списке CSV в Python, который может принимать различные формы:Extract элементы целых чисел из эквидистантной списки в Python

[[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]] 

то, что я хотел бы сделать, это извлечь все целое число от каждого элемента, и прикрепить его к й т.е. для моих первый список производит [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 этого имя списка, и мм результирующего списка, который я хотел бы получить. Однако я только что понял, что это дает мне неправильные результаты для случая, когда в каждом элементе списка есть 2 целых числа. Кто-нибудь знает, как я могу использовать другую функцию, чтобы делать то, что я желаю?

Спасибо!

ответ

4

Использование list comprehension и str.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'] 
Смежные вопросы