背景:

我正在尝试编写将识别对称分区的代码 . 我有一个分区和反向分区功能,它将按顺序打印出分区,反过来

即分区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语句中,我试图获取分区的第一个列表中的第一个整数,并将其与我的反向分区的第一个列表中的元素数进行比较 . 然后我想继续分区列表中的下一个元素

我的问题:


如果我已经在我的迭代器上调用了下一个操作,我该如何再次执行它以确保我遍历列表中的每个元素,同时确保我只获得子列表中的第一个整数?