将列表中的每个元素打印为前一个元素的两倍
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])
你好我有点菜鸟..我试图让程序打印每个元素的数量是前一个元素的两倍..我找到了一个解决方案但它看起来很笨拙..有更好的吗版本 .. 这是代码 .
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])