同时显示两个列表的相应元素

2024-04-25 09:24:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,我想匹配两个不同数组的相同索引并将其发送到一个文件中,但在编译时遇到了问题。这是我的想法:

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上实现这一点?你知道吗


Tags: 文件inforif数组interfacesinterfacewrite
3条回答

你的“i”循环迭代“interfaces”列表中的元素…然后你尝试使用这些元素作为索引,但你不能这样做。你知道吗

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

for i in range(len(interfaces)):

您不需要遍历所有索引,然后找到匹配的索引。如果您有一些索引i,您可以从每个列表中访问相应的项。你知道吗

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

另外,正如其他人所指出的,您得到这个错误是因为您试图使用ij作为索引,而它们实际上是您正在迭代的列表的元素,因此是字符串类型。你知道吗

你不可能需要两个循环。试试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

相关问题 更多 >

    热门问题