2014-11-08 37 views
-1

我有字符串「DARPA」,我想知道每個值的索引。 .index()僅返回第一個匹配項。我怎樣才能得到第二個'A'的索引? 正是這種代碼的一部分:Python:找到一個值不止一次的索引

L = ["DARPA","DA","ARPRPA"] 
my = [] 
for i in L: 
    if len(i)>= 3: 
     my.append(i) 
a = [] 
for i in my: 
    for char in i,: 
     a.append(i[i.index(char):i.index(char)+3]) 
C = [] 
for i in a: 
    if len(i) == 3: 
     C.append(i) 
print C 

,其輸出應爲[ 'DAR', 'ARP', 'RPA', 'ARP', 'RPR', 'PRP', 'RPA'], usinf僅用於循環。

+0

請格式化代碼,並標記您正在使用的語言。 – 2014-11-08 14:37:40

回答

1

你不需要知道每個元素的索引,你需要的是條目的長度,你已經正確計算出使用len()。 期望的結果可以通過

print_len=3 
var = ["DARPA","DA","ARPRPA"] 
for w in var: 
    if len(w)>3: 
     start=0 
     w_len=len(w)+1 
     for i in range(print_len,w_len): 
      print w[start:i] 
      start=start+1 

可以實現,如果你仍然需要所有字符的索引,可以使用類似:

s='thisismywordwithrepeatsinthewords' 
for index,char in enumerate(s): 
    print index,char 

混合兩種片段會看到這樣的:

print_len=3 
var = ["DARPA","DA","ARPRPA"] 
for w in var: 
    if len(w)>3: 
     for i,c in enumerate(w[:len(w)-2]): 
      print w[i:i+3] 
+0

謝謝!這真的很有幫助。你有什麼建議可以添加到我的代碼中以便工作嗎? – 2014-11-08 15:17:45

0

最好先了解一下代碼

只需輕鬆獲得輸出:

var = ["DARPA","DA","ARPRPA"] 
for w in var: 
    if len(w)>3: 
     for i in range(len(w)-2): 
      print w[i:i+3]