【发布时间】:2012-04-02 20:20:10
【问题描述】:
我在考虑内置 Python 列表方法时遇到问题。
在我学习 Python 的过程中,我一直认为 Python mutator 就像任何值类 mutator 都应该做的那样,返回它创建的新变量。
举个例子:
a = range(5)
# will give [0, 1, 2, 3, 4]
b = a.remove(1)
# as I learned it, b should now be [0, 2, 3, 4]
# what actually happens:
# a = [0, 2, 3, 4]
# b = None
这个列表修改器没有返回一个新列表的主要问题是你不能在随后进行多个突变。 假设我想要一个从 0 到 5 的列表,没有 2 和 3。 返回新变量的变异器应该能够这样做:
a = range(5).remove(2).remove(3)
很遗憾,这是不可能的,就像range(5).remove(2) = None。
现在,有没有办法像我在我的示例中那样对列表进行实际执行多个突变?我认为即使是 PHP 也允许使用字符串进行这些类型的后续突变。
我也找不到关于所有内置 Python 函数的好的参考资料。如果有人能找到所有列表修改器方法的实际定义(带有返回值),请告诉我。我只能找到这个页面:http://docs.python.org/tutorial/datastructures.html
【问题讨论】:
-
“当我学习 Python 时,我一直认为 Python mutators 就像任何值类 mutators 应该做的那样,返回它创建的新变量。” ——你从哪里学来的?事实上,在 Python 中拥有具有可变状态的对象是很常见的,列表就是其中之一。 (字符串不是。)