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

时间:2012-01-27 20:53:24

标签: python list

我正在使用一个库,并且正在使用该类库中的特定对象进行初步工作。假设类型为X.此库提供了一个自定义容器,如对象,XList,其行为看起来大部分就像一个列表。

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

xl = makeXList(...)
l = []
for x in xl:
    print repr(x)
    l.append(x)

结果“l”是一个空列表。然而,我看到x被飞出了 - 所以我知道它们真的是迭代器。我重复相同的,但是将x改为[1,2,3],而l现在是[1,2,3]。是什么给了什么?

是否有某种方式X类型的实例可能拒绝进入普通的python列表? 或者是否有一种良性的,新的原因,这可能不像我期望的那样起作用?这样做的机制是什么?对于python库编写者来说,这是一个常见的事情吗?这个库的文档看起来很稀疏,有些例子似乎显示了一个普通的Xs python列表,我发现它很奇怪。


问题是什么

有问题的图书馆是scapy。 scapy似乎遇到了格式错误的数据包并且拒绝从PacketList转换为>使用rdpcap时从pcap读取格式错误的数据包时的python列表。当scapy处理非格式错误的数据包时,上面的代码工作正常。

1 个答案:

答案 0 :(得分:1)

你确定你实际上在for-in循环中获得了条目吗?也许xl的迭代器不能正常工作,所以你实际上并没有得到任何元素。