你好,我有点菜鸟..我试图让程序从一次开始打印每个元素的数量是前一个元素的两倍..我找到了一个解决方案,但看起来很笨重..有更好的版本..这里是代码 。
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
uj5u.com热心网友回复:
您的代码按原样可读且功能齐全,但如果您想精简它,您可以使用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() 将自动为您填充一个空格,这有助于提高可读性。
uj5u.com热心网友回复:
您可以使用该pow()
函式在每次迭代中计算 2 的下一个倍数并使用它来重复print()
:
for i in range(len(a)):
for j in range(pow(2, i)):
print(a[i])
0 评论