将列表中的每个元素打印为前一个元素的两倍

Printing Each Element In a List Double The Amount Of The Previous One

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

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

你的代码是可读的,功能正常,但如果你想精简它,你可以使用 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 加倍来计算幂,但这并不是一个非常大的 material 变化。此外,如果您将多个变量作为单独的参数传递给 print(),如 print(a,b) 而不是 print(a + b),print() 将自动为您填充一个 space,这对可读性。

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

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