有没有一种方法可以使用列表推导式来检验 Collatz 猜想,而无需使用 while 语句或其他方法将 n 值附加到 ls 中,而无需在每个语句后添加 ls ?
from random import choice
from time import sleep
n = choice([x for x in range(2, 99*99) if all(x%y != 0 for y in range(2, x))])
ls = []
ls.append(n)
while True:
if n % 2 == 0:
n = n // 2
ls.append(n)
elif n % 2 != 0:
n = (3 * n) + 1
ls.append(n)
if n == 1:
break
print(ls)
Run Code Online (Sandbox Code Playgroud)