2017-09-09 110 views
0

我是Python的新手,我想匹配2個不同數組的相同索引並將其發送到文件,但編譯時遇到問題。這是我的想法:一起顯示兩個列表的相應元素

interfaces= ['g0/0','g0/1','g0/2'] 
nameif = ['inside','outside','dmz'] 

for i in interfaces: 
    for j in nameif: 
     if interfaces[i]==nameif[j]: 
      g.write ('\ninterface '+ i + j) 

我期待看到這個文件中:

interface g0/0 inside 

interface g0/1 outside 

interface g0/2 dmz 

但是當我運行它這樣,它說TypeError: list indices must be intergers or slice, not str

任何想法,我怎麼能在Python上實現這一點?

回答

1

你沒有辦法爲此需要兩個循環。改爲嘗試zip

for x, y in zip(interfaces, nameif): 
    print('interface {} {}'.format(x, y)) 

interface g0/0 inside 
interface g0/1 outside 
interface g0/2 dmz 

有一個小竅門,你應該瞭解for是如何工作的更好。例如,

for x in interfaces: 
    print(x) 

g0/0 
g0/1 
g0/2 

A for循環遍歷迭代器而不是索引。如果你想遍歷兩個,你可以使用enumerate

for i, x in enumerate(interfaces): 
    print(i, x) 

0 g0/0 
1 g0/1 
2 g0/2 
+0

非常感謝,該作品!現在繼續玩文件 – VENTIZ

0

你的「我」循環迭代中的「接口」列表中的元素...然後您嘗試使用這些元素作爲一個指數,該指數你做不到。

什麼,你很可能希望爲數字迴路,如:

for i in range(len(interfaces)): 
0

你並不需要遍歷所有索引,然後找到匹配的人。如果您有一些索引i,您可以訪問每個列表中的相應項目。

for i in range(len(interfaces)): 
    g.write ('\ninterface '+ interfaces[i] + nameif[i]) 

而且,正如其他人所指出的那樣,你得到的錯誤,因爲你正在嘗試使用ij作爲指標,而他們實際上是你遍歷數組中的元素,以及因此字符串類型。

+0

感謝您的快速回答和解釋 – VENTIZ

相關問題