我想"乘以"字符串x
的每个字符三次(这样它连续出现三次)。
def triple(x):
for i in range(len(x)):
trip = ''
y = ''
trip = x[i] *3
y += trip
print(y)
目前只打印最后一个字符乘以3次
答案 0 :(得分:3)
这是因为您每次重置y
到循环中的''
。所以你可以用:
def triple(x):
y = '' # initialize y only at the *start* of the loop
for i in range(len(x)):
trip = x[i] *3
y += trip
print(y)
但它仍然不够优雅且效率低下。我们可以通过使用生成器或列表理解来做更好的事情,例如:
def triple(x):
print(''.join(c for c in x for _ in range(3)))
或使用 list comprehension :
def triple(x):
print(''.join([c for c in x for _ in range(3))])
我们在这里做的是迭代c
的字符x
。对于每个这样的角色,我们迭代三次(使用for _ in range(3)
)。因此,我们每次c
每次产生三次。然后我们将这些角色加在一起。
我们还可以在yield中添加字符c
或将它们相乘,例如:
def triple(x):
print(''.join([c+c+c for c in x])
或:
def triple(x):
print(''.join([3*c for c in x])
答案 1 :(得分:2)
在列表理解中,只需将字符串与要重复的字符串相乘,然后再将其连接起来,以创建所需的字符串:
>>> my_str = 'ABC'
>>> ''.join([x*3 for x in my_str])
'AAABBBCCC'