2012-06-28 63 views
0

嘿,這可能是一個簡單的問題,但我一直難倒它一段時間=/如何從一個列表打印出具體數值

我有一個字符串答:

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] 

我想使一個新的列表時,該打印字符串A的括號內的值列表C,WH ich由列表B中的數字定義。

感謝您的幫助!

編輯: 我的目標是創建一個只打印有什麼內在的括號內的列表中,這樣的事情:

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

話,我將在逗號分開,並輸入相應的2串進其他功能我已經定義了,但是現在,我只需要列表ç

+0

其中蟒版本支持這樣的列表'B = [12 13 14 15 16 17 18 19 20 21 22 23] '?? –

+0

請顯示您的預期結果。所陳述的問題根本沒有意義。 –

+0

@Sean爲什麼字符串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'] 

編輯:

>>> 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的定義有多餘的parens,使它看起來像一個元素的tupple,而列表B缺少它的逗號,這意味着它提出了一個語法錯誤。 –

+0

@SimonHibbs我的解決方案中沒有語法錯誤。 –

+0

啊,謝謝你,那就是我要找的東西,我的實際列表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]