我不确定这是可能的,但......
我正在尝试编写一个函数,它将输出数字列表,以便它们可以输入到另一个函数中。我虽然处于死胡同,因为return
或yield
(在这种情况下使用)都不能给我我想要的东西。
def ITERATOR():
for number in range(1,3):
for item in itertools.permutations(range(15),number):
yield item
显然,只要使用return
,函数就会中断,而yield
会立即返回所有内容。理想情况下我想要输出的是每行打印的内容:
def ITERATOR():
for number in range(2,4):
for item in itertools.permutations(range(15),number):
print(item)
即:
(0, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(0, 6)
(0, 7)
(0, 8)
(0, 9)
(0, 10)
(0, 11)
(0, 12)
(0, 13)
(0, 14)
etc...
有没有办法实现这个目标?
如果要返回列表,可以这样做:
def fct():
return [item for item in itertools.permutations(range(15),number) for number in range(2,4)]
对于发电机
def fct():
return (item for item in itertools.permutations(range(15),number) for number in range(2,4))
解
new_tuples = []
for i in range(0, 5):
for j in range(1, 16):
new_tuples.append((i, j))
for i in new_tuples:
print(i)
产量
(xenial)vash@localhost:~/python$ python3 text_seg.py (0, 1) (0, 2) (0, 3) (0, 4) (0, 5) (0, 6) (0, 7) (0, 8) (0, 9) (0, 10) (0, 11) (0, 12) (0, 13) (0, 14) (0, 15) (1, 1)
评论
这种方法会满足您的需求吗?您可以根据需要交换数字,但是,这将允许您与list
商店有一个tuples
,并能够将它们称为print
。
您可以通过函数的参数返回列表,并使用函数的返回来指示已建立的排列数:
import itertools
permut = []
def ITERATOR(item):
n_permuts= 0
for number in range(2,4):
for item in itertools.permutations(range(15),number):
permut.append(item)
n_permuts+= 1
return n_permuts
print (ITERATOR(permut))
for item in permut:
print(item)