例如:01011100101110111
等等。
我想让它无限发展,但这可能是不可能的。我已经试过了:
lista = [1,2,3,4,5,6,7,8,9,10]
listres = [str(bin(x))[2:].zfill(4) for x in lista]
print(listres)
它是有效的,但它都是一条线,也不是无限的。
您可以创建一个生成器:
def infinite_binary():
x = 0
while True:
yield str(bin(x))[2:]
x += 1
infinite_binary_gen = infinite_binary()
while True:
print(next(infinite_binary_gen))
输出:
0
1
10
11
100
101
110
111
1000
1001
... and so on
如@chepner的评论中所述,您可以将itertools.count(start=0,step=1)
用于基本生成器:
from itertools import count
infinite_binary_gen = (str(bin(x))[2:] for x in count())
while True:
print(next(infinite_binary_gen))
使用这样的循环而不是列表理解:
i = 0
while True:
# uncomment this line to break the infinite loop:
# if i > 10: break
print(str(bin(i))[2:])
i += 1
请注意,此处不需要zfill(4)
。
如果需要将结果强制转换为int
,使用:print(int(str(bin(i))[2:]))
我只需要使用while循环。通过这种方式,您可以在4行代码中完成。试试这个:
count = 1
while True:
listres = str(bin(count))[2:].zfill(4)
print(listres)
count += 1