Theoretically we can replace the black characters with 1111 and zzzz so that we have two strings, then we convert them into numbers. Basic sequential counting is cheap compared to the cryptographic hashing done on each PK so with a fast Base58-to-hex converter, we can successively increment those black characters from 1 to z.
hello,
you mean to say something like that ??
from bit import *
from bitcoin import *
import random
list = ["16jY7qLJnxb7CHZyqBP8qca9d51gAjyXQN","13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so","1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9","1MVDYgVaSN6iKKEsbzRUAYFrYJadLYZvvZ"]
while 1==1:
a = random.randrange(144,255)
while a <= 4095:
a+=1
b = ("3536A")
c = random.randrange(16777216,268435455)
d = ("b0")
myhexa = "%050x" % a
myhexc = "%0x" % c
j = (myhexa+b+myhexc+d)
priv = j
pub = privtopub(priv)
pubkey1 = encode_pubkey(privtopub(priv), "bin_compressed")
addr = pubtoaddr(pubkey1)#compressed
s1 = j
s2 = addr
if addr in list:
print ("...............FOUND.............")
f=open(u"C:/found.txt","a")
f.write(s2+" ")
#f.write(s3+" ")
f.write(s1+"\n")
f.close()
break
if addr.startswith("16j")or addr.startswith("13z")or addr.startswith("1B8")or addr.startswith("1MV")::
print(j,addr)