如何创建二进制数字的无限循环?

2024-10-01 15:31:16 发布

您现在位置:Python中文网/ 问答频道 /正文

例如: 0 10 11 100 101 110 111

等等

我想让它无限延伸,但这可能是不可能的。 我已经试过了:

lista = [1,2,3,4,5,6,7,8,9,10]
listres = [str(bin(x))[2:].zfill(4) for x in lista]
print(listres)

它是有效的,但它是一条直线,也不是无限的


Tags: inforbin直线printstrlistazfill
3条回答

使用这样的循环而不是列表:

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:]))

您可以创建一个生成器:

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的注释所述,您可以使用^{}作为基本生成器:

from itertools import count

infinite_binary_gen = (str(bin(x))[2:] for x in count())
while True:
    print(next(infinite_binary_gen))

我会使用while循环。这样,您可以在4行代码中完成。试试这个:

count = 1

while True:
    listres = str(bin(count))[2:].zfill(4)
    print(listres)
    count += 1

相关问题 更多 >

    热门问题