我不确定是否可以,但是...
我正在尝试编写一个将输出数字列表的函数,以便可以将它们输入到另一个函数中。不过,我处于死胡同,因为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...
有什么办法可以做到这一点?
答案 0 :(得分:0)
如果您想返回列表,可以这样做:
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))
答案 1 :(得分:0)
解决方案
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
。
答案 2 :(得分:0)
您可以通过函数的参数返回列表,并使用函数的返回值指示建立的排列数:
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)