Мне нравится, как я могу обрабатывать списки в 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])
Мне нравится способ простого получения новых экземпляров измененных списков, выполняя такие действия, как Например, типичная проблема получения всех перестановок элементов в списке в Python ...
Мне нравится, как я могу обрабатывать списки в 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])
Мне нравится способ простого получения новых экземпляров измененных списков, выполняя такие действия, как Например, типичная проблема получения всех перестановок элементов в списке в Python ...
Мне нравится, как я могу обрабатывать списки в 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])
Мне нравится способ простого получения новых экземпляров измененных списков, выполняя такие действия, как
числа [: i] + числа [i + 1:]
или sol + [числа [i]]
Если я попытаюсь точно так же кодировать на Java, это будет выглядеть так:
import java.util.ArrayList;
import java.util.Arrays;
class rec {
static void permutation_recursion(ArrayList numbers, ArrayList sol) {
if (numbers.size() == 0)
System.out.println("permutation="+Arrays.toString(sol.toArray()));
for(int i=0;i remaining = new ArrayList(numbers);
remaining.remove(i);
ArrayList sol_rec = new ArrayList(sol);
sol_rec.add(n);
permutation_recursion(remaining,sol_rec);
}
}
static void get_permutation(ArrayList numbers) {
permutation_recursion(numbers,new ArrayList());
}
public static void main(String args[]) {
Integer[] numbers = {1,2,3};
get_permutation(new ArrayList(Arrays.asList(numbers)));
}
}
Чтобы создать такую же рекурсию, мне нужно сделать:
ArrayList remaining = new ArrayList(numbers);
remaining.remove(i);
ArrayList sol_rec = new ArrayList(sol);
sol_rec.add(n);
Что довольно некрасиво, и становится хуже для более сложных решений. Как и в в этом примере
Итак, мой вопрос ... есть ли в Java API какие-либо встроенные операторы или вспомогательные функции, которые сделали бы это решение более «питоническим»?