我确实喜欢Python中处理列表的方式。它执行任何递归解决方案,以使其看起来简单而干净。例如,在Python中,获取列表中元素的所有排列的典型问题如下:def permutation_recursion(numbers,sol):
if not numbers:
print "this is a permutation", sol
for i in range(len(numbers)):
permutation_recursion(numbers[:i] + numbers[i+1:], sol + [numbers[i]])
def get_permutations(numbers):
permutation_recursion(numbers,list())
if __name__ == "__main__":
get_permutations([1,2,3])
我很喜欢这样的方式,我可以简单地通过以下操作获得修改列表的新实例
numbers[:i] + numbers[i+1:]或{}
如果我试图用Java编写完全相同的代码,它看起来像:
^{pr2}$
要创建相同的递归,我需要执行以下操作:ArrayList remaining = new ArrayList(numbers);
remaining.remove(i);
ArrayList sol_rec = new ArrayList(sol);
sol_rec.add(n);
这很难看,而且对于更复杂的解决方案,情况会变得更糟。就像this example
所以我的问题是。。。javaapi中是否有任何内置运算符或helper函数可以使这个解决方案更加“Pythonic”?在