繁体   English   中英

Python3显示一定数量的输出

[英]Python3 Display certain number of output

我有一个数字列表,我想每行显示10个,它们的格式必须非常好

start: 1
End: 1000
   2    3    5    7   11   13   17   19   23   29 
  31   37   41   43   47   53   59   61   67   71 
  73   79   83   89   97  101  103  107  109  113 
 127  131  137  139  149  151  157  163  167  173 
 179  181  191  193  197  199  211  223  227  229 
 233  239  241  251  257  263  269  271  277  281 
 283  293  307  311  313  317  331  337  347  349 
 353  359  367  373  379  383  389  397  401  409 
 419  421  431  433  439  443  449  457  461  463 
 467  479  487  491  499  503  509  521  523  541 
 547  557  563  569  571  577  587  593  599  601 
 607  613  617  619  631  641  643  647  653  659 
 661  673  677  683  691  701  709  719  727  733 
 739  743  751  757  761  769  773  787  797  809 
 811  821  823  827  829  839  853  857  859  863 
 877  881  883  887  907  911  919  929  937  941 
 947  953  967  971  977  983  991  997 

格式必须是这样,开头的“ 2”必须在“ 31”的“ 1”的顶部,依此类推。

所以我尝试了一些解决方案

gen = ('%-5s\n' % x if i%10==0 else '%-5s' %x for i,x in enumerate(prime_list,1))

这会给我这样的东西

1    2    3    5    7    11   13   17   19   23
29   31   37   41   43   47   53   59   61   67
71   73   79   83   89   97   101  103  107  109
113  127  131  137  139  149  151  157  163  167
173  179  181  191  193  197  199  211  223  227
229  233  239  241  251  257  263  269  271  277
281  283  293  307  311  313  317  331  337  347
349  353  359  367  373  379  383  389  397  401
409  419  421  431  433  439  443  449  457  461
463  467  479  487  491  499  503  509  521  523
541  547  557  563  569  571  577  587  593  599
601  607  613  617  619  631  641  643  647  653
659  661  673  677  683  691  701  709  719  727
733  739  743  751  757  761  769  773  787  797
809  811  821  823  827  829  839  853  857  859
863  877  881  883  887  907  911  919  929  937
941  947  953  967  971  977  983  991  997

恰恰相反我想要的。 有人知道吗

谢谢!

尝试gen = ('%+5s\\n' % x if i%10==0 else '%+5s' %x for i,x in enumerate(prime_list,1))而不是gen = ('%-5s\\n' % x if i%10==0 else '%-5s' %x for i,x in enumerate(prime_list,1))

>>> nums = [2,32,34,3,54,5,436,45,6,45,674,57,56,87,567,2]
>>> gen = ('%+5s\n' % x if i%10==0 else '%+5s' %x for i,x in enumerate(nums,1))
>>> for i in nums:
...     print(next(gen))
...
    2
   32
   34
    3
   54
    5
  436
   45
    6
   45
  674
   57
   56
   87
  567
    2

1不是素数 因此, prime_list不应包含1。理想情况下, prime_list生成应不含1。 如果您必须事后纠正错误,请使用

prime_list = prime_list[1:]

更正后,您的代码可以正常工作:

print(''.join('%-5s\n' % x if i%10==0 else '%-5s' %x for i,x in enumerate(prime_list,1)))

产量

2    3    5    7    11   13   17   19   23   29   
31   37   41   43   47   53   59   61   67   71   
...
947  953  967  971  977  983  991  997  

或者,您可以将问题分解为较小的部分:

  1. 每个int 格式化为长度为5的左对齐字符串
  2. 使用石斑鱼食谱zip(*[iterator]*n)将物品分成10组
  3. 以表格形式打印组

import itertools as IT

prime_list = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139,
149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229,
233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421,
431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521,
523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619,
631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733,
739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839,
853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953,
967, 971, 977, 983, 991, 997]

prime_strs = ('{:<5d}'.format(val) for val in prime_list) # 1
grouped = IT.zip_longest(*[prime_strs]*10, fillvalue='')  # 2
print('\n'.join(''.join(row) for row in grouped))         # 3

产量

2    3    5    7    11   13   17   19   23   29   
31   37   41   43   47   53   59   61   67   71   
73   79   83   89   97   101  103  107  109  113  
127  131  137  139  149  151  157  163  167  173  
179  181  191  193  197  199  211  223  227  229  
233  239  241  251  257  263  269  271  277  281  
283  293  307  311  313  317  331  337  347  349  
353  359  367  373  379  383  389  397  401  409  
419  421  431  433  439  443  449  457  461  463  
467  479  487  491  499  503  509  521  523  541  
547  557  563  569  571  577  587  593  599  601  
607  613  617  619  631  641  643  647  653  659  
661  673  677  683  691  701  709  719  727  733  
739  743  751  757  761  769  773  787  797  809  
811  821  823  827  829  839  853  857  859  863  
877  881  883  887  907  911  919  929  937  941  
947  953  967  971  977  983  991  997  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM