如何使用来自for循环的值制作多维列表

时间:2019-07-17 06:48:13

标签: python

在我的代码中有两个循环,一个主要是for循环,它将从ip地址列表中读取一些ip地址,第二个循环是我向这些ip发送一些命令并获得一些输出(必需)的地方,我正在发送两个命令并从这些命令中获取两个输出。首先,我使用split(,)方法将这些输出分离,并使用append方法将其附加到列表中。我获得的输出接近我的期望输出,但未获得确切或预期的输出。帮助我获得该输出。

这里我正在使用与Python列表相关的方法来获取输出。

cli_commands = ['sh version | i p n|Cisco IOS','sh inventory']
for k in range(len(cli_commands)):
    net_connect.send_command(cli_commands[k])
    vall=net_connect.send_command(cli_commands[k])
    #myList2.extend(vall.strip().split(","))
    #myList2.append(vall.split(","))
    myList2.append(vall.strip().split(","))

实际结果:

[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ', ' VID: V02  ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L  ', ' VID: V02  ', ' SN: FOC1502Z4G1']]

此处外部循环将获取ip地址,并进入内部forloop,在此它将逐个执行两个命令,以及['Cisco IOS Software','C2960S Software(C2960S-UNIVERSALK9-M)','15.0(2)版SE11',“ RELEASE SOFTWARE(fc3)']将来自第一个命令,并且

['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ', ' VID: V02  ', ' SN: FOC1452X5C5']

将来自循环中的其他命令。

期望:

[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ', ' VID: V02  ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L  ', ' VID: V02  ', ' SN: FOC1502Z4G1']]

2 个答案:

答案 0 :(得分:2)

尝试以下作为最后一行:

print([myList2[i] + myList2[i + 1] for i in range(0, len(myList2), 2)])

输出:

[['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ', ' VID: V02  ', ' SN: FOC1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE SOFTWARE (fc3)','NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L  ', ' VID: V02  ', ' SN: FOC1502Z4G1']]

答案 1 :(得分:1)

你可以做

[x + y for x, y in zip(myList2[0::2], myList2[1::2])]

以您给出的示例为例:

In [15]: myList2 = [['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE
    ...: SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ', ' VID: V02  ', ' SN: FOC
    ...: 1452X5C5'], ['Cisco IOS Software', ' C2960S Software (C2960S-UNIVERSALK9-M)', ' Version 15.0(2)SE11', ' RELEASE
    ...:  SOFTWARE (fc3)'], ['NAME: "1"', ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L  ', ' VID: V02  ', ' SN: FO
    ...: C1502Z4G1']]

In [16]: [x + y for x, y in zip(myList2[0::2], myList2[1::2])]
Out[16]:
[['Cisco IOS Software',
  ' C2960S Software (C2960S-UNIVERSALK9-M)',
  ' Version 15.0(2)SE11',
  ' RELEASE SOFTWARE (fc3)',
  'NAME: "1"',
  ' DESCR: "WS-C2960S-24TS-L"\nPID: WS-C2960S-24TS-L  ',
  ' VID: V02  ',
  ' SN: FOC1452X5C5'],
 ['Cisco IOS Software',
  ' C2960S Software (C2960S-UNIVERSALK9-M)',
  ' Version 15.0(2)SE11',
  ' RELEASE SOFTWARE (fc3)',
  'NAME: "1"',
  ' DESCR: "WS-C2960S-48TS-L"\nPID: WS-C2960S-48TS-L  ',
  ' VID: V02  ',
  ' SN: FOC1502Z4G1']]