gpt4 book ai didi

python - 有效地迭代 python 嵌套列表

转载 作者:太空狗 更新时间:2023-10-29 22:13:32 25 4
gpt4 key购买 nike

我正在使用 Python 开发网络流量监控项目。不太熟悉Python,所以我在这里寻求帮助。

简而言之,我是检查进出流量,我是这样写的:

for iter in ('in','out'):
netdata = myhttp()
print data

netdata是一个由嵌套列表组成的列表,它的格式是这样的:

[ [t1,f1], [t2,f2], ...]

这里t代表时刻,f代表流。但是我现在只想为进出保留这些 f,我想知道有什么方法可以获得有效的代码。

经过一些搜索,我想我需要使用创建一个流量列表(2 个元素),然后使用 zip 函数同时迭代两个列表,但我很难写出正确的列表。由于我的netdata是一个很长的list,效率也很重要。

如果有任何令人困惑的地方,请告诉我,我会尽力澄清。感谢帮助

最佳答案

除了对您的代码进行小的修复(@Zero Piraeus 提出的问题)之外,您的问题可能已得到解答 here .遍历 N 度列表列表(一棵树)的可能代码如下:

def traverse(item):
try:
for i in iter(item):
for j in traverse(i):
yield j
except TypeError:
yield item

例子:

l = [1, [2, 3], [4, 5, [[6, 7], 8], 9], 10]
print [i for i in traverse(l)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

使其工作的关键是递归,而使其有效工作的关键是使用生成器(关键字 yield 给出了提示)。生成器将遍历您的列表列表并逐项返回给您,而无需复制数据或创建一个全新的列表(除非您使用整个生成器将结果分配给列表,就像我的示例一样)

使用迭代器和生成器可能是难以理解的奇怪概念(主要是关键字 yield)。检查这个 great answer充分了解他们

关于python - 有效地迭代 python 嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17014211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com