我想添加两个不同的迭代次数

问题描述

这里的函数接受 2 个整数 k 和 l,并给出以 l 为基数的数 k。现在循环打印以 2 为底的所有数字,从 0 到 100。
我想要做的是,如果 2 个不同迭代的最后一位数字相同,则将数字相加 代码

def base(k,l):
    result=''
    while k!=0:
        remainder = k%l
        k=k//l
        result= str(remainder)+ result  
    return result
t=10
for i in range(100):
    print('0'+base(i,2).zfill(t))

我无法将它们附加到列表或数组中,因为我的迭代非常大并且会消耗太多内存。有办法吗?

解决方法

您可以这样做的一种方法是根据最后一位数字将迭代存储在 dict 中。这将允许您稍后恢复它。由于数字数量有限,这不应该消耗太多内存,我们只存储迭代值以备后用。

d = {}
for i in range(100):
    val = '0'+base(i,2).zfill(t)
    if val[-1] in d:
       val2 = d[val[-1]] + i
       #do whatever with this value?
    else: #We haven't had an iteration with the same last digit
       d[val[-1]] = i #store i for later

基于我认为您想做什么。我认为下一个代码将解决它。

maxRange = 100
baseNum = 2
t=10
for i in range(maxRange):
    val = '0'+base(i,baseNum).zfill(t)
    startVal = int(val[-1]) #Base the startVal on the last digit
    for val2 in range(startVal,i,baseNum): #start at startVal,go to current num and increment by what our base is.
        print(f'{i}+{val2}=')
        print('0'+base(i+val2,baseNum).zfill(t)) 

示例输出:

2+0=
00000000010
3+1=
00000000100
4+0=
00000000100
4+2=
...
99+89=
00010111100
99+91=
00010111110
99+93=
00011000000
99+95=
00011000010
99+97=
00011000100