为什么有些python对象;“拒绝”;进入标准python列表?

为什么有些python对象;“拒绝”;进入标准python列表?,python,list,Python,List,我正在使用一个库,并且主要使用该库中的一个特定对象,比如说类型X。该库提供了一个自定义容器,如对象XList,它的行为基本上类似于列表 似乎当我执行以下操作时: xl = makeXList(...) l = [] for x in xl: print repr(x) l.append(x) 结果“l”是一个空列表。尽管如此,我还是看到x在std上飞出——所以我知道它们确实是迭代器。我重复同样的步骤,但是将x改为[1,2,3],l现在是[1,2,3]。有什么好处 是否有某种方式

我正在使用一个库,并且主要使用该库中的一个特定对象,比如说类型X。该库提供了一个自定义容器,如对象XList,它的行为基本上类似于列表

似乎当我执行以下操作时:

xl = makeXList(...)
l = []
for x in xl:
    print repr(x)
    l.append(x)
结果“l”是一个空列表。尽管如此,我还是看到x在std上飞出——所以我知道它们确实是迭代器。我重复同样的步骤,但是将x改为[1,2,3],l现在是[1,2,3]。有什么好处

是否有某种方式使得X类型的实例拒绝进入普通python列表或者是否有一个良性的、新的原因,这可能无法像我预期的那样工作?这样做的机制是什么?对于python库编写人员来说,这是一件常见的有意的事情吗?这个库的文档看起来很稀疏,一些示例显示了一个普通的python Xs列表,我觉得这很奇怪


问题出在哪里


有问题的图书馆是斯卡皮。在使用rdpcap时,当从pcap读取格式错误的数据包时,scapy似乎遇到格式错误的数据包,并拒绝从PacketList->python list转换。当scapy处理格式不正确的数据包时,上述代码可以正常工作。

您确定在for-in循环中确实获得了条目吗?可能xl的迭代器工作不正常,因此实际上没有返回任何元素。

请发布更多代码。你太笼统了。也许还会发布一些解释器输入和输出?我们可以测试的东西会很有帮助…你确定
xl
不是空的吗?你确定makeXList中的
xl
实际上已填充且可枚举吗?在循环中添加一个print语句,以验证您没有跟踪phantom@JoelCornett我将尝试重新创建这个示例。更具体地说,我正在使用scapy并获取packetlist。我假设我是一个完全的新手,python有一些更深层次的东西我只是没有看到