一起显示两个列表的相应元素

时间:2017-09-09 23:47:57

标签: python list

我是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上实现这个目标?

3 个答案:

答案 0 :(得分: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

for循环遍历迭代器,而不是索引。如果您想迭代这两者,可以使用enumerate

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

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

答案 1 :(得分:0)

你的'i'循环遍历'interfaces'列表中的元素......然后你尝试将这些元素用作索引,这是你无法做到的。

您可能想要的是一个数字循环,例如:

for i in range(len(interfaces)):

答案 2 :(得分:0)

您不需要遍历所有索引,然后找到匹配的索引。如果您有一些索引i,则只需访问每个列表中的相应项目。

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

此外,正如其他人所指出的那样,您之所以会收到该错误,是因为您尝试使用ij作为索引,而他们实际上是列表的元素你正在迭代,因而是字符串类型。