[英]Print for loop results in one line and sort
for n in range(1,1000000):
print(n)
result = []
for x in range(1,3000001):
if n%2==0:
x=n/2
else:
x=3*n+ 1
n=x
result.append(n)
if n==1:
break
print(len(result))
n+=1
我希望这些结果以数组或类似的方式打印。我的意思是这样的。
3,1,7,2,5,8,1,..
然后我想采取最高元素及其索引。我怎么能这样做?谢谢。
您可以使用str.join
执行第一项任务:
>>> result = [4, 0, 9, 7, 8, 3, 2, 6, 1, 5]
>>> print (', '.join(map(str, result)))
4, 0, 9, 7, 8, 3, 2, 6, 1, 5
max
为enumerate
第二个任务:
>>> ind, val = max(enumerate(result), key=lambda x:x[1])
>>> ind, val
(2, 9)
如果将完成工作的循环分离到自己的函数中,这将变得更加容易。
def collatz_length(n):
result = []
for x in range(1,3000001):
if n%2==0:
x=n/2
else:
x=3*n+ 1
n=x
result.append(n)
if n==1:
break
return len(result)
print(max((collatz_length(i + 1), i) for i in range(1000000)))
由于您没有使用result
,只是它的长度,您可以通过简单计数来简化(并加速)该功能
您可以使用三元表达式来整理x的计算
def collatz_length(n):
for c in range(1, 3000001):
x = 3 * n + 1 if n % 2 else n / 2
n = x
if n == 1:
return c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.