如何从for循环的结果中列出一个清单

时间:2018-10-10 08:40:10

标签: python list for-loop

我有这个脚本

for row in c:
    res = subprocess.Popen('bgpq3 -4 {} -m 24 -l {}'.format(row[5],row[2]), shell=True, universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    stdout, stderr = res.communicate()

    lines = []
    for line in stdout.split('\n')[1:10]:
        lines.append(line)
        print(lines)

这将导致:

   ['ip prefix-list 12414 permit 5.57.248.0/21']
   ['ip prefix-list 12414 permit 5.57.248.0/21', 'ip prefix-list 12414 permit 5.199.144.0/20']
   ['ip prefix-list 12414 permit 5.57.248.0/21', 'ip prefix-list 12414 permit 5.199.144.0/20', 'ip prefix-list 12414 permit 5.206.208.0/20']

我正在使用append方法制作一个大列表,但是我得到了很多列表! 有想法吗?

1 个答案:

答案 0 :(得分:1)

您可以看到正确的列表是最后打印的列表。这是因为您将print函数放到了循环中,并会在所有循环中打印出当前列表  迭代,因此,从for正文中删除打印内容并将其置于循环之外。

for line in stdout.split('\n')[1:10]:
    lines.append(line)
print(lines)