Форум сайта python.su
Приветствую участников форума!
Помогите пожалуйста с алгоритмом.
Имея данные:
one | three
two | four
| five
На выходе нужно получить все возможные комбинации, но в строгом порядке:
one | three
one | four
one | five
two | three
two | four
two | five
Не могли бы вы привести пример кода, с применением процедурного стиля.
Офлайн
f = ['one', 'two'] s = ['three', 'four', 'five'] for x in f: for y in s: print x+"|"+y
one|three one|four one|five two|three two|four two|five
Отредактировано Singularity (Июнь 21, 2014 23:36:12)
Офлайн
Singularity
Оказалось все просто, похоже я перегрелся.
Спасибо!
Офлайн
По-моему это должно быть в топике для новичков.
from itertools import combinations, product elements = ["one", "two", "three", "four", "five"] result = combinations(elements, 2) print tuple(result) # >> #(('one', 'two'), ('one', 'three'), ('one', 'four'), ('one', 'five'), #('two', 'three'), ('two', 'four'), ('two', 'five'), ('three', 'four'), #('three', 'five'), ('four', 'five')) iterable_one = ["one", "two"] iterable_two = ["three", "four", "five"] result = product(iterable_one, iterable_two) print tuple(result) # >> #(('one', 'three'), ('one', 'four'), ('one', 'five'), ('two', 'three'), #('two', 'four'), ('two', 'five'))
Отредактировано Griffon (Июнь 22, 2014 12:25:06)
Офлайн
Griffon
Да не, я не студент. Пишу переборщик директорий, оказалось что рекурсивно будет проще чем итеративно, т.к. работа будет с произвольным числом полей, вот что получилось:
dirs = [["var", "home"], ["www", "html"], ["index.php", "test.php", "info.php"]] def Recursion(arr, count = 0, mass = [], total = []): if not count < len(arr): return for i in arr[count]: data = mass + [i] if count == len(arr)-1: total.append(data) Recursion(arr, 1+ count, mass + [i], total) return total for i in Recursion(dirs): print "/"+"/".join(i)
Офлайн
>>> dirs = [["var", "home"], ["www", "html"], ["index.php", "test.php", "info.php"]] >>> for i in product(*dirs): print i ('var', 'www', 'index.php') ('var', 'www', 'test.php') ('var', 'www', 'info.php') ('var', 'html', 'index.php') ('var', 'html', 'test.php') ('var', 'html', 'info.php') ('home', 'www', 'index.php') ('home', 'www', 'test.php') ('home', 'www', 'info.php') ('home', 'html', 'index.php') ('home', 'html', 'test.php') ('home', 'html', 'info.php') >>>
Офлайн