- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
反转元组和反转列表返回不同类型的对象:
>>> reversed((1,2))
<reversed at 0x7fffe802f748>
>>> reversed([1,2])
<list_reverseiterator at 0x7fffebdd4400>
它们有相同的dir
。两种类型都不是另一种类型的子类。
这是为什么呢?一个人能做什么,另一个人不能?
最佳答案
基本上,列表实现了 __reversed__
方法并返回一个专门的对象,而 tuple
回退到 reversed
的默认实现顺序:
>>> list.__reversed__
<method '__reversed__' of 'list' objects>
>>> tuple.__reversed__
AttributeError: type object 'tuple' has no attribute '__reversed__'
现在,为什么列表不默认为序列 reversed
对象必须在列表对象本身的源代码中找到 - 可能它通过直接访问一些内部 来启用一些优化列出
属性。
其实看C代码,差别不大,肯定没有什么吸引眼球的——
我敢说特殊列表 __reversed__
实现是 Python2 天的遗留物,其中 reversed
实际上会将任何其他 Python 序列复制到 list
- 所以其他序列没有特殊情况是没有意义的(当他们实现通用 enumreverse
时,它对于元组来说已经足够了)。
我很确定,如果简单地注释掉 listobject.c
上的 __reversed__
槽,Python 及其列表就会像什么都没发生一样工作,默认为一般情况 reversed
.
关于python - 反转元组和反转列表有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165800/
所以,我只是按照 Think Python 教程继续了元组部分,我想问的是为什么它有效: def sumall(*args): return sum(args) print sumall(1,
使用新的 C# 7 元组语法,是否可以指定一个以元组作为参数的 lambda 并在 lambda 中使用未打包的值? 例子: var list = new List(); 在 lambda 中使用元组
使用新的 C# 7 元组语法,是否可以指定一个以元组作为参数的 lambda 并在 lambda 中使用未打包的值? 例子: var list = new List(); 在 lambda 中使用元组
这已经给我带来了一些麻烦,也许我的视力受到了影响。给定一个整数列表,生成一个新列表,其中每组相邻的重复项都已变成一个元组。 例如,给定列表:[1, 2, 3, 3, 4, 5, 5, 5, 6] 生成
我使用 python 生成一些 POVray 渲染代码,以可视化某些计算数据。我需要将很多参数从 python 传递到 POVray 代码字符串。我想让纸条更干净。所以我想直接使用元组和数组作为字符串
scala> val two = (1,2) two: (Int, Int) = (1,2) scala> val one = (1,) :1: error: illegal start of sim
我在理解 rpy2 对象和 python 对象的映射时遇到了一些问题。 我有一个在 python 中返回一个元组对象的函数 (x),我想用 R 对象列表或向量映射这个元组对象。 首先,我正在尝试这样做
假设我有一个元组: let t = (1,'a') 我想创建一个三元组/三元组: let createTriple (a,b) c = (a, b, c) F# 中是否有一种语法可以让我从 n
//An N-tuple (quadruple?) that is a subset of a row type Quadruple = [string, string, number, boolea
我是一名优秀的程序员,十分优秀!