2012-06-28 2 views
0

Эй, это может быть простой вопрос, но я был поставлен в тупик на нем какое-то время =/Как распечатать конкретные значения из списка

У меня есть строка A:

A = ('A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5') 

и А соответствующий список B, который отображает точное положение каждого значения внутри внутренней скобки строки A:

B = [12 13 14 15 16 17 18 19 20 21 22 23] 

Я хочу, чтобы создать новый список, список C, который печатает значения в скобках в строке, Wh ich определяется числами в списке B.

Спасибо за помощь!

Edit: Моя цель состоит в том, чтобы создать список, который просто печатает то, что находится внутри внутренней скобкой, что-то вроде этого:

C = ('C:0.3,D:0.4') 

тогда я разделить на запятую, и ввести соответствующий 2 строки в другая функция я определил, но сейчас я просто нужен список C

+0

который питон версия поддерживает такие списки 'B = [12 13 14 15 16 17 18 19 20 21 22 23] '?? –

+0

Пожалуйста, покажите свой ожидаемый результат. Ваша проблема, как указано, не имеет никакого смысла. –

+0

@ Определите, почему строка A находится внутри '()'? –

ответ

2
>>> A = ('A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5') 
>>> B = [12 ,13, 14 ,15, 16, 17, 18, 19 ,20 ,21, 22, 23] 
>>> C=[A[x] for x in B] 
>>> C 
['(', 'C', ':', '0', '.', '3', ',', 'D', ':', '0', '.', '4'] 

EDIT:

>>> A = ('A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5') 
>>> C=A[A.find('('):A.find(')')+1] 
>>> C 
'(C:0.3,D:0.4)' 
+0

Обратите внимание на проблемы с синтаксисом. В определении A есть лишние парсы, которые делают его похожим на одноэлементный переплет, в то время как в списке B отсутствует его запятая, что означает, что он поднял синтаксическую ошибку. –

+0

@SimonHibbs В моем решении нет синтаксических ошибок. –

+0

Ahh, спасибо, это то, что я искал, мои фактические списки A и B не так легко определены как A = '', B = '' в моем коде, я просто упростил это, чтобы облегчить мой вопрос. – Sean

0

Предполагая, что B действительно является списком,

кажется, что вам действительно нужно только B[0] и B[-1] для этого:

print A[B[0]:B[-1]+1] 

Или как список:

list_of_chars=list(A[B[0]:B[-1]+1]) 

Если в любая точка, B не является последовательной (работает, если B также является последовательным):

list_of_chars=[A[i] for i in B] 

даст вам список персонажей ...

0

Простой список понимание может решить эту проблему:

C = [A[i] for i in B]