背景:
我正在尝试编写将识别对称分区的代码 . 我有一个分区和反向分区功能,它将按顺序打印出分区,反过来
即分区3:[[3],[2,1],[1,1,1]]和反向分区3:[[1,1,1],[2,1],[3]]
我的目标是编写一个程序,它将匹配分区函数的子列表的第一个位置中的整数(所以3,2和1),并将其与我的反向子列表中每个元素的数量相匹配分区(因此代码将[3]和[1,1,1]视为相同,并为两者计数1 .
代码
这是我到目前为止的代码:
def symmetric_function(n):
counter = 0
my_iter = iter(partitions(n))
my_iter2 = iter(lex_partitions(n))
x = 0
size = count(partitions(n))
while x < size:
if my_iter.__next__()[0] == count(my_iter2.__next__()):
counter += 1
x += 1
-> my_iter = my_iter.__next___()
else:
x += 1
-> my_iter2 = my_iter2.___next___()
print(counter)
我把指针放在我遇到麻烦的地方 . 我知道这部分是错的,但我不知道该怎么做 . 在我的if语句中,我试图获取分区的第一个列表中的第一个整数,并将其与我的反向分区的第一个列表中的元素数进行比较 . 然后我想继续分区列表中的下一个元素
我的问题:
如果我已经在我的迭代器上调用了下一个操作,我该如何再次执行它以确保我遍历列表中的每个元素,同时确保我只获得子列表中的第一个整数?