【问题标题】:Printing Each Element In a List Double The Amount Of The Previous One打印列表中的每个元素的数量是前一个元素的两倍
【发布时间】:2022-01-06 10:22:02
【问题描述】:

你好,我有点菜鸟..我试图让程序从一次开始打印每个元素的数量是前一个元素的两倍..我找到了一个解决方案,但看起来很笨重..有更好的版本吗? . 这是代码。

a=['h','ha','hah','jaja','kkkkk']     
s=.5        
for x in range(len(a)):
    s=int(s*2)
    n=1
    for j in range (s):
        print(str(n)+str(a[x]))
        n+=1

【问题讨论】:

  • 请澄清预期的输出,“打印每个元素的数量是前一个元素的两倍”的含义并不是很明显。
  • 意味着它会打印一次 h
  • 哈两次,哈四次,依此类推

标签: python list loops nested-loops


【解决方案1】:

你的代码是可读的和功能性的,但是如果你想精简它,你可以使用enumerate()来减少一些赋值,这是一个python内置函数,可以为你生成递增变量s和n,所以你不需要不必自己管理它们:

a=['h','ha','hah','jaja','kkkkk']     
for s, x in enumerate(range(len(a))):
    for n, j in enumerate(range(2**s)):
        print(str(n+1), str(a[x]))

采用这种方法意味着我们通过 2**s 而不是每次迭代加倍 s 来计算幂,但这并不是一个非常重大的变化。此外,如果您将多个变量作为单独的参数传递给 print(),作为 print(a,b) 而不是 print(a + b),print() 将自动为您填充一个空格,这对可读性很有好处。

【讨论】:

  • 这太棒了..谢谢伙计。
  • 如果答案符合您的要求,您可以点击其上的复选标记以“关闭”已回答的问题
【解决方案2】:

您可以使用 pow() 函数在每次迭代中计算 2 的下一个倍数,并使用它来重复 print()

for i in range(len(a)):
  for j in range(pow(2, i)):
    print(a[i])

【讨论】:

  • 该网站建议避免谢谢.. 但谢谢:D
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 2017-03-05
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多